此文章是写在二轮java复习,用来总结在刚开始学java时没注意的知识点。
-----------------------------------------------------------------
1)抽象类中可以有非抽象的构造方法,但不能有静态方法即static和abstract不能连用,抽象类不能被实例化,不能被private保护,因为抽象方法需要让子类实现,抽象类只能被单继承,接口可以多继承并且可以由多个类实现。
--当类c需要使用已存在的类a和类b中的方法,可以使用组合关系,即在类a作为类c的一个成员变量,然后将要用的方法在类c中重新定义mathon()并且在函数体中用a.mathon()直接复用。
2)继承
子类继承了父类,就继承了父类的方法和属性。在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法。因而,子类通常比父类的功能更多。在Java 中,继承的关键字用的是“extends”,即子类不是父类的子集,而是对父类的“扩展”
子类不能继承父类中私有的(private)的成员变量方法。(!不继承父类的构造方法,需要自己写或者super调用父类的构造方法)
3)重载
方法重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数个数或类型不同,参数序不同即可。
- 方法重写
在子类中可以根据需要对从父类中继承来的方法进行改造—覆盖方法(方法的重置、重写),在程序执行时,子类的方法将覆盖父类的方法。覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型。盖方法不能使用比被覆盖方法更严格的访问权限,子类覆盖方法的权限>=父类被覆盖方法的权限
- Super
在Java类中使用super来引用父类的成分
super可用于访问父类中定义的属性
super可用于调用父类中定义的成员方法
super可用于在子类构造方法中调用父类的构造方法
super的追溯不仅限于直接父类
6)final
在Java中声明类、属性和方法时,可使用关键字final来修饰。
final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。
final标记的类不能被继承。提高安全性,提高程序的可读性。
final标记的方法不能被子类重写。增加安全性。
final标记的成员变量必须在声明的同时或在每个构造方法中显式赋值,然后才能使用。
7)多态
由继承而出现的父类与子类,当需要用到父类时,可以直接使用子类代替
父类类型的引用变量可以指向子类的对象
动态绑定:编译时e为Person类型,而方法的调用是在运行时确定的,所以调用的是Student类的getInfo()方法。
一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法(!但可以访问子类中重写过的方法)
即:Animal a=new Duck();//合法 --->动态绑定
Duck d=new Animal();//不合法
这里a2.cry在父类输出Animal Cry!,在子类重写过后输出Duck cry again!(相当于执行一次Duck.cry())
父类与子类的引用可以相互转换,但是将基类向子类转换时,需要强转