类和对象(面向对象的程序设计)
对象:是一种状态或行为
类:是描述对象的行为和状态
成员变量和成员方法 局部变量
成员变量(类的属性)
局部变量就是定义的成员方法里面的变量必须要附初值
public class demo {
//成员方法
private static int power (int number) {//实现一个计算平方数的方法
return number*number;
}
public static void main (String[] args) {
int number=10;
System.out.println("进入power方法前number的值:"+number);
power(number);//调用power方法
System.out.println("进入power方法后number的值:"+number);
}
}
在上述实例中定义了一个主方法和一个成员方法(函数)
主函数中第三行通过power()调用power的构造方法(如果没有给出power的构造方法则编译器会自动给power一个无参的构造方法)
通过调用改方法可实现数字的平方
this. 关键字当成员变量与成员方法中的变量重名时需要用this.+变量名使用成员变量
this关键字还可以调用构造方法
static 关键字
一种静态修饰符 一个对象的更改会影响另一个的更改
public class StaticVariables {
//若count非static则最后打印sv.count值都为1
private static int count;//定义静态变量实例化次数
public StaticVariables(){
count++;//每次调用构造方法加一
}
public static void main(String[] args){
StaticVariables sv1=new StaticVariables();
StaticVariables sv2=new StaticVariables();
StaticVariables sv3=new StaticVariables();
System.out.println("创建了"+count+"个StaticVariables类型的对象");
}
}
sv1调用以后count的值为1
sv2调用以后count的值为2
sv3调用以后count的值为3
最后输出结果为3
类的定义
public class ObjectCreation {
//创建一个类的对象
public ObjectCreation () {//创建类的构造方法
System.out.println("创建了ObjectCreation类的对象");
}
public static void main (String[] args) {
ObjectCreation obj=new ObjectCreation();//创建了类的对象
System.out.println(obj);
}
}
注:如果我们没有创建类的构造方法则编译器会给我们一个无参的构造方法,如果创建了构造方法则编译器不会再给我们无参的构造方法。
-
封装
封装是面向对象的编程的核心思想,封装就是将数据和数据的操作放在一起对用户隐藏其实现的细节
访问权限修饰符 | 同一个类 | 同一个包 | 子类(异包) | 全局范围 |
---|---|---|---|---|
Public | 可见 | 可见 | 可见 | 可见 |
Protected | 可见 | 可见 | 可见 | 不可见 |
无修饰符 | 可见 | 可见 | 不可见 | 不可见 |
Private | 可见 | 不可见 | 不可见 | 不可见 |
定义一个circle类实例属性
使用构造方法给3个属性赋初值
实例方法求面积和圆周长实例化这个类
class circle {
private double xpoint;
private double ypoint;
private double radius;
public circle() {
}
public double getr() {
return radius;
}
public circle(double x,double y,double r) {
xpoint=x;
ypoint=y;
radius=r;
}
public double area(){
return Math.PI*radius*radius;
}
public double circumference() {
return Math.PI*radius*2;
}
public class Test { //两个类放一起时需要static修饰
public static void main(String[] args) {
circle obj=new circle(0,0,5);
System.out.println("圆的半径为:"+obj.getr());
System.out.println("圆的面积为:"+obj.area());
System.out.println("圆的周长为:"+obj.circumference());
}
}
}
在此例中有两个类下面Test类为主类circle类中定义了成员变量由于修饰符的原因 因此在Test类中无法调用只能用getr()的方法得到radius的值
- 继承
类的继承是单一继承(一个子类只能继承一个父类)
public class bird {
String color;
}
public class pigeon extends bird {
public pigeon() {
color="white";
}
public static void main(String[] args) {
pigeon p=new pigeon();
System.out.println(p.color);
}
}
使用extends关键字实现pigeon类继承bird类
接口:使用接口实现对接口中的方法进行重写,实现对方法的继承。
- 多态
就是将父类对象应用于子类时对方法进行重写的过程就叫多态。
方法的重载
在下面程序中使用方法重载分别实现了两个整数和三个整数的相加
class AddOver{
public int add(int a,int b) {
return a+b;
}
public int add(int a,int b,int c) {
return a+b+c;
}
}
public static void main(String[] args) {
AddOver a=new AddOver();
System.out.println(a.add(1, 2));
System.out.println(a.add(1, 2, 3));
}
}
方法的重写
public class bird {
@Override //对toString方法重写
public String toString() {
return "This is Bird";
}
}
public class bick {
@Override
public String toString() {
return "This is Bick";
}
}
public class Test {
public static void main(String[] args) {
bick Bick=new bick();
bird Bird=new bird();
System.out.println(Bird);
System.out.println(Bick);
}
}
最后一个Test类创建类的对象实现输出
转载:https://blog.csdn.net/qq_45868624/article/details/106318356