一、多态
二、对象初始化,构造函数
一、多态
Java中实现多态的两种形式:
(1)overload:重载
(2)overwrite:重写
重载即为函数名相同,返回类型相同,但函数参数不同。
重写即为对父类的函数进行重写,函数名相同,返回类型相同,函数参数也相同。
若函数名称相同,参数相同,返回值不同,则为语法错误。
Java中的函数均为默认的虚函数,不需要显式说明,都可以实现多态。
若为函数添加final关键字,则不能再被重写,避免了动态绑定,获取效率。
针对抽象编程可获得更大的灵活性,一般通过父类型的引用变量来访问子类对象。
▲抽象类
抽象类不允许实例化,可以没有函数实现而只有函数声明。在一个类中,如果有抽象函数必为抽象类,抽象类不一定有抽象函数。抽象类的声明如下:
abstract class A{
//抽象类的实现
}
▲接口
接口是一种特殊的类,由全局常量和公共的抽象方法组成。接口的定义格式为:
public interface K{
全局常量;
抽象方法;
}
接口中的抽象方法必须为public权限,如果省略,则也为public权限。接口是一种抽象类,若要使用必须通过子类,子类通过implements关键字来实现接口,定义格式如下:
class A implements K,M,N{
接口实现
}
其中,一个子类(Java中的类)可以同时实现多个接口,这就打破了Java的单继承局限。
接口类型的引用变量可以访问实现该接口的类对象。
二、对象初始化,构造函数
构造函数用来初始化对象的属性。
若在类的实现中,没有构造函数,则编译器会自动生成一个不带参数的默认构造函数;若自己写了构造函数,则编译器不提供。
一个类的构造函数,若第一个语句不是super()函数,也不是this()语句,则会自动调用super()函数。
故构造函数中super()和this()不能同时使用。
super的其他使用方法:
(1)普通的直接引用
与this类似,super相当于是指向当前对象的父类,这样就可以用super.xxx来引用父类的成员。
(2)子类中用super来调用父类中被覆盖的成员函数
对象初始化的顺序:
(1)线初始化父类,再初始化子类
(2)变量初始化->初始化代码->构造函数