继承
好处:
1、让类与类之间产生了关系,提高了代码的复用性。2、 提供了另一个特征多态的前提。
特点:1、java只支持单继承,不支持多继承,但java保留这种机制,并用另一种体现形式来完成表示:多实现
2、java支持多层继承:B继承A、C继承B
子父类中变量的特点:
如果子类中出现非私有的同名变量时,子类要访问本类变量用:this,访问父类变量用:super
this和super的使用:
1、成员变量:this.变量名------表示当前类的变量 super.变量名----父类的变量
2、用在构造方法中:this(参数)----本类的构造方法 super(参数)----父类的构造方法
3、用在成员方法中:this.方法名()----本类的方法 super.方法名()-----父类的方法
子父类中函数的特点:
1、当子类出现和父类一模一样的函数时,父类中的函数会被子类的函数所覆盖
2、子类覆盖父类,必须保证子类权限大于父类权限
重载:同一个类中,方法名相同,参数列表不同,与返回值类型无关。
重写(覆盖):子父类中,方法名、返回值、参数列表都相同.
什么时候用重写?或者说为什么要用重写?或者说重写的应用?
重写存在于子父类中,当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类中的方法,
这样既沿袭了父类的功能,又定义了子类特有的功能。
子父类方法重写注意的问题:
1、父类中的私有方法不可以被重写。
2、子类方法访问权限一定要大于等于父类方法访问权限。
3、静态方法只能被静态方法重写。
注意:
子类中所有的构造方法都会默认访问父类中的无参构造方法,因为每一个子类构造内第一行都有默认的语句super();
为什么?因为子类会自动具备父类中非私有的数据,那么这个数据的初始化靠父类来完成。所以,会先调用父类的构造方法对数据进行初始化。
如果父类中没有无参构造方法,那么子类的构造方法内,必须通过super语句指定要访问的父类中的构造方法。
如果子类构造方法中用this来指定调用子类自己的构造方法,那么被调用的构造方法也一样会访问父类中的构造函数。
final特点:
1:这个关键字是一个修饰符,可以修饰类,方法,变量。
2:被final修饰的类是一个最终类,不可以被继承。
3:被final修饰的方法是一个最终方法,不可以被覆盖。
4:被final修饰的变量是一个常量,只能赋值一次。
抽象类的特点:当多个类中出现相同功能但功能主体不同。这时可以进行向上抽取:只抽取功能定义,不抽取功能主体
1:抽象方法只能定义在抽象类中,抽象类和抽象方法必须由abstract关键字修饰(可以描述类和方法,不可以描述变量)。
2:抽象方法只定义方法声明,并不定义方法实现。抽象类中不一定要有抽象方法,有抽象方法的类必须是抽象类。
3:抽象类不可以被创建对象(实例化)。通过子类对象进行初始化。
4:只有通过子类继承抽象类并重写了抽象类中的所有抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类。
5: 抽象类只能单继承。
6:抽象关键字abstract和哪些不可以共存?final , private , static
注意:在继承中,为什么有些时候选择父类是抽象类?当我们强制要求子类必须完成某些功能的时候。
抽象类的成员特点:
1、成员变量:可以有成员变量,也可以有常量。
2、构造方法:有构造方法。用于子类访问父类数据前,对父类数据进行初始化。
3、成员方法:可以有抽象方法,也可以有非抽象方法。抽象方法是为了要求子类做某些事情;非抽象方法是为了提高代码复用性,被子类继承。
模板设计模式:就是利用抽象类
模板设计:新生入学手续办理
|
|