java学习之类的继承

声明:此内容参考书籍《疯狂java讲义第二版》

继承是面向对象的三大特征之一,也是实现软件复用的重要手段,java的继承具有单继承的特点,每个子类只有一个直接父类。

继承的特点

1、使用extends关键字实现。
image.png
image.png
2、单继承
3、每个子类只有一个直接父类,但是可以有多个间接父类

class Fruit extends Plant
class Apple extends Fruit

重写父类的方法

子类包含与父类同名方法的现象成为方法重写,也成为方法覆盖,重写需要遵循“两同两小一大”规则。
1、两同即方法名相同、形参列表相同;
2、两小指的是子类方法返回值类型应该比父类方法返回值类型更小或相等;
3、一大指的是子类方法的访问权限比父类方法的访问权限更大或相等。
4、覆盖方法和被覆盖方法要么是类方法,要么是实例方法,不能一个是类方法,一个是实例方法;
5、父类方法被private修饰,则该方法对其子类进行隐藏,因此其子类无法访问该方法,也无法重写该方法。如果在子类中定义了一个和父类private方法具有相同的方法名和形参列表,相同的返回值类型的方法,依然不是重写,只是在子类中定义了一个新方法。

class BaseClass{
  private void test(){...}//子类不可以访问该方法
}
class SubClass extends BaseClass{
  public static void test(){...}//此处并不是方法重写,所以可以增加static 关键字
}

###super限定
1、如果需要在子类中调用父类被覆盖的实例方法,则可使用super关键字调用父类被覆盖的实例方法。

class Bird{
  public void fly(){
    System.out.println("我在天空中自由翱翔!") ;
}
}
class TuoNiao extends Bird{
    public void fly(){
        System.out.println("我只能在地上奔跑") ;
    }
    public void callOverrideMethod(){
        super.fly();//在子类方法中通过super显式调用父类被覆盖的实例方法。
   }
}

2、super用于限定对象调用它从父类继承得到的变量和方法,正如this不能出现在static修饰的方法中一样,super也不能出现在static修饰的方法。
3、重载和重写的区别:重载主要发生在同一个类多个同名方法之间,而重写发生在子类和父类的同名方法之间。父类和子类方法之间也可能发生重载,因为子类会获得父类的一个方法,子类再定义一个和父类相同的方法名,但参数列表不同的方法,就会发生方法的重载。
4、如果子类定义了一个和父类同名的变量,则会发生子类变量隐藏父类变量,此时需要使用super来访问被隐藏的变量。
image.png


查询a的规则顺序:
(1)查找该方法中是否有名为a的局部变量;
(2)查找当前类中是否包含名为a的成员变量;
(3)查找a的直接父类中是否包含为a的成员变量,依次上溯到a的全部父类,直到java.lang.Object,如果最终不能找到,则出现编译错误。
如果被覆盖的是类变量,在子类方法中可以通过父类名作为调用者来访问被覆盖的类变量。

调用父类构造器

在一个构造器中调用另一个构造器使用this来完成,在子类构造器中调用父类构造器使用super 来完成。
子类构造器掉用父类构造器分为以下几种情况:
(1)子类构造器执行体的第一行使用super显示调用父类的构造器,系统将根据super调用里传入的实参列表调用父类对应的构造器;
(2)子类构造器执行体的第一行代码使用this显示调用本类中重载的构造器,系统将根据this调用里传入的实参列表调用本类中的另一个构造器。执行本类中的另一个构造器即会调用父类的构造器。
(3)子类构造器执行体中既没有super调用,也没有this调用,系统将会在执行子类构造器之前,隐式调用父类无参数的构造器。
无论哪种,父类构造器总在子类构造器之前执行。super和this都需要在构造器执行体中第一行出现,但是因为super调用的是父类构造器,this调用的是子类构造器,所以this调用和super调用不会同时出现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值