面向对象的三大特征:继承,封装,多态
继承
1.父类也称为基类,超类;子类也称为派生类。
2.语法规则: class 子类 extends 父类 {
}
3.Java中一个子类只能继承一个父类(接口可以多继承),C++支持多继承。
4.子类会继承父类所有的public的字段和方法,但无法访问父类的private字段和方法。
5.可以使用super关键字得到父类实例的引用。
6 .instanceof是二元运算符,左边是对象,右边是类;当对象是右面类或子类所创建对象时,返回true;否则,返回false。
7 .Object类是所有Java类的根基类,也就意味着所有的Java对象都拥有Object类的属性和方法。如果在类的声明中未使用extends关键字指明其父类,则默认继承Object类。
封装
优点: 1. 提高代码的安全性,复用性;
2.高内聚:封装细节,便于修改内部代码,提高可维护性;
3.低耦合:简化外部调用,便于调用者使用,便于扩展和协作。
Java是使用“访问控制符”来控制哪些细节需要封装,哪些细节需要暴露的。 Java中4种“访问控制符”分别为private、default、protected、public,它们说明了面向对象的封装性,所以我们要利用它们尽可能的让访问权限降到最低,从而提高安全性。
一般情况下,默认修饰符为default
final关键字的作用:
-
修饰变量: 被他修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。
-
修饰方法:该方法不可被子类重写。但是可以被重载!
-
修饰类: 修饰的类不能被继承。比如:Math、String等。
多态
多态的要点:
1. 多态是方法的多态,不是属性的多态(多态与属性无关)。
2. 多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。
3. 父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。
多态的主要优势是提高了代码的可扩展性,符合开闭原则。但是多态也有弊端,就是无法调用子类特有的功能,这时我们就需要转型的帮助。
父类引用指向子类对象,我们称这个过程为向上转型,属于自动类型转换。 向上转型后的父类引用变量只能调用它编译类型的方法,不能调用它运行时类型的方法。这时,我们就需要进行类型的强制转换,我们称之为向下转型!
在向下转型过程中,必须将引用变量转成真实的子类类型(运行时类型)否则会出现类型转换异常ClassCastException。为了避免出现这种异常,我们可以使用instanceof运算符进行判断。