面向对象的三大特性
面向对象的三大特性,分别为:封装、继承、多态。
一、封装性
1. 封装性概念
简言之就是隐藏该隐藏的,暴露该暴露的。
一般情况下,我们将我们类中的属性设为private,方法设为public。并为private属性提供set和get方法。
事实上,对象的出现就是为了封装数据的,每个对象都封装自己的数据。
2. 修饰符的范围
修饰符的范围可见下表:
3. static修饰符
如果说,封装性是我们每个对象自私、独享的一面,那么static便是对象无私、共享的一面。
static可以修饰类中的属性和方法。被static修饰的属性和方法,是所有该类的对象所共享的。这个共享表现在两个方面:
- 被static修饰的属性的值,在所有变量中共享,也就是说,你改变一个对象中的static属性时,其他的对象中的该属性值也会随着改变。
- 即使在还没有创建该类的对象时,就可以通过类名.属性名,或类名.方法名()的方式访问static修饰类的属性。也正是因为这样,static类型的方法只能访问static类型的属性,因为在对象还未创建时,非static类型的属性还不存在。
正是因为static修饰的方法可以在没有类对象的时候被执行,所以我们的main方法需要被static修饰。
新建一个Person类,添加static类型的属性(并创建其set、get方法)和方法:
package com.daw.test2;
public class Person {
private String id;
private String name;
private int age;
//static修饰变量
static String nation;
//static修饰方法
public static void test() {
System.out.println(nation);
//System.out.println(id); //static的方法只能访问static的对象
}
//方法
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getNation() {
return nation;
}
public void setNation(String nation) {
this.nation = nation;
}
}
编写类Test2来尝试访问static修饰的对象和方法
package com.daw.test2;
public class Test2 {
public static void main(String[] args) {
//在未创建Person类的对象时,即可访问static修饰的属性
Person.nation = "中国";
System.out.println(Person.nation);
Person.test();
System.out.println("******************"<