1.封装,把该隐藏的隐藏起来,把该暴露的暴露出来
1.1.Java访问控制
- 默认访问权限(包访问权限),public,private以及protected。
注意:上述四种访问权限,只有默认访问权限和public能够用来修饰类。修饰类的变量和方法四种权限都可以。(本处所说的类针对的是外部类,不包括内部类)
- 修饰类
默认访问权限(包访问权限):用来修饰类的话,表示该类只对同一个包中的其他类可见。
public:用来修饰类的话,表示该类对其他所有的类都可见。
- 修饰类的方法和变量
1.2属性,属性一般是私有的,并且有set和get方法。
1.3 this 关键字
- 在方法中变量前加this,就代表直接给对象的字段赋值。
- this代表当前使用的对象的地址。
- this区分成员变量和局部变量。
- 同类当中,实例方法的调用,可以省略this,其实是this.say();
- 可以把this当作参数去传递,也可以当作返回值返回。
- static不能和this一起使用。
- 构造器重载互相调用,this();此时的this代表构造器名,必须写在第一行。
2.继承,解决代码重复的问题,表示出一个体系。
- 父类,存放共同的状态和行为,也叫超类,基类,拓展类。
- 子类,存放自己的状态和行为。
2.1.extends子类扩展了父类就获得了父类的方法和成员变量,可是父类的一些方法不适用于子类本身,我可以在子类中重新定义这个方法,这个过程被称为方法的覆盖(重写)。(引申方法的重载和重写的区别)
2.2.重写的规则
- 覆盖的方法名和父类的方法名必须相同。(方法的名称和参数)
- 重写的方法返回值必须和父类的返回值类型相同。
- 重写的方法的访问权限必须比父类的访问权限大(或者一样大)
2.3. super关键字,调用父类的方法,super代表父类对象,this代表当前对象。
2.4.如果一个类有父类,会在构造器中默认调用父类的构造器。
- 创建对象的时候,先创建父类对象,再创建自己。初始化对象也是先对父类变量进行初始化,再对自己初始化。
- super调用构造器,必须放在第一行。super和this不能同时调用构造器。super代表地址,this代表对象。
- super直接去找父类中的方法和变量,this先在当前类中找,找不到再去父类中找。
2.5.隐藏
- 如果子类和父类有相同的静态方法,,这个时候我们称它是方法的隐藏。
- 隐藏父类当中的字段,子类和父类有相同的字段,继承字段隐藏。super.字段
- 本类字段隐藏,方法参数和本类字段相同,this.字段
2.6.Object类,是Java语言的根类,要么是一个类的直接父类,要么是一个类的间接父类。
- hashcode方法,equals方法,toString方法
3.多态
3.1.多态的特点
- 把子类对象赋值给父类变量,在运行时期会表现出具体的子类特征,调用子类的方法。
- 多态运行的时候,还是运行自己创建的对象本身。
3.2.多态的好处
- 把不同的子类对象当成是父类类型来看待,可以屏蔽不同子类对象之间的实现差异,从而写出通用的代码,达到通用编程。以适应需求的不断变化。
3.3.instanceof,判断一个类是不是指定的类。
3.4. 字段不存在多态,SuperClass sub = new SubClass(); sub.name 调用的还是SuperClass中的name
3.5.编译时多态(静态多态性)和运行时多态
- 方法的重载是编译时多态
- 方法的重写是运行时多态