面向对象程序三大特性:封装、继承、多态。
将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
优点:
Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符:
范围 | private | defaut | protected | public | |
1 | 同包同类 | √ | √ | √ | √ |
2 | 同包不同类 | √ | √ | √ | |
3 | 不同包中子类 | √ | √ | ||
4 | 不同包非子类 | √ |
class Dog{
public String name;//public修饰
private int age;//private修饰
String color;//默认,default修饰
public Dog(String name, int age, String color) {
this.name = name;
this.age = age;
this.color = color;
}
public void eat(){
System.out.println(name + "在吃狗粮");
}
}
public class Test1 {
public static void main(String[] args) {
Dog dog = new Dog("豆豆",1,"白色");
System.out.println(dog.name);//public修饰,可以被任何类访问,可以打印
System.out.println(dog.color);//默认,default修饰,可以在本包访问,可以打印
System.out.println(dog.age);//private修饰,只可以在Dog类访问,无法打印
}
}
那我们就没有办法访问 private修饰的成员变量了吗?那当然是有的。
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
就如上面代码,我们只需要借助getAge(),setAge(),然后直接访问 getAge(),那么就可以打印这个属性了。
System.out.println(dog.getAge());
封装是面向对象程序三大特性之一,这次为大家带来封装,我们下次见!