9.Java语言继承和抽象类,this关键字、super关键字

版权声明:原创,转载请说明,谢谢! https://blog.csdn.net/ajia5216/article/details/82343948

继承

子类和父类,把共同的属性和行为写到一个类中(父类),然后让具有该种共同属性和行为的类(子类)继承父类,从而

获得和父类相同的属性和行为(这些属性和行为不能是父类私有的,也就不能是private修饰的)。继承提高了代码的复用

继承的方式:

应先定义一个父类,然后子类想继承父类需要用关键词 extends来继承,

格式:class A{}     class B extends A{}       --B类继承了A类

继承后的特点—成员变量:

  1. 如果子类中的变量名和父类中的变量名相同,那么子类中调用的时候,会优先从子类中调用。(调用变量的顺序是,先从子类中查找,再从父类中查找
  2. 如果变量名重名,又需要使用父类的变量,可以用super关键词调用父类变量,方式是:super.变量名
  3. 不重名不影响

继承后的特点—成员方法:

  1. 不重名不影响,会先从子类中查找,再从父类中查找
  2. 重名的,就近原则

继承后的特点—构造方法:

  1. private 的成员跟继承无关
  2. 构造方法跟继承无关
  3. 子类对象创建

a)先创建父类部分,执行父类的构造方法

b)然后创建子类部分,执行子类的构造方法

c)子类对象把父类部包含进来  就近原则

成员方法重名—重写:

如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写 (Override)。

  1. 子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。
  2. 注意事项

a)子类方法覆盖父类方法,必须要保证权限大于等于父类权限。

public > protected  >默认 > private

b)子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样。否则,编译不报错,重写失败,子类增加一个

方法

c)在开发中,使用注解@Override 放在方法,让javac编译器,检测重写覆盖是否成功

d)在开发中,使用alt+INS 菜单,选覆盖重写,或者右键菜单generate 选覆盖重写

 

super、this关键字

  1. this和super

什么时候用到this和super关键字,当子类中的变量和父类中的变量同名时, 用this和super进行区分,this指向子类中的变

量(或者方法),super指向父类中的变量(或者方法)

 

this和super只能子类方法中使用,可调用变量或方法

this() 和 super()

  1. this() 表示执行本类的构造方法,super() 表示执行父类的构造方法

如果有参数,必须传参数

  1. 只能在子类构造方法的第一行使用,同子类构造方法中,只能调用super()或者this()

抽象类

如果父类中的方法,所有子类都重写,父类中的这个方法没有意思,被这个方法定义成抽象的方法,有抽象方法的类必须

写成抽象类。

 

  1. abstract 修饰的类是抽象类,修饰的方法是抽象方法
  2. 抽象类中可以没有抽象方法,有方法的类必须写成抽象类
  3. 子类继承父类,子类中必须重写父类中所有的抽象方法,否则子类必须是抽象类

注意:

不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。

可以有构造方法,是供子类创建对象时,初始化父类成员使用的。

不一定包含抽象方法,但是有抽象方法的类必定是抽象类

必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类

猜你喜欢

转载自blog.csdn.net/ajia5216/article/details/82343948