JAVA当中的继承

关于继承

在继承的关系中,一个子类就是一个父类,也就是说,子类可以被当作父类看待。

例如父类是员工,子类是讲师,那么“讲师就是一个员工”。

父类的格式

public clss 父类名称(){
    // ...
}

子类的格式

public class 子类名称 extends 父类名称(){
    //....
}

关于继承中的一些注意事项

  1. 在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式:
    • 直接通过子类对象访问成员变量:等号左边是谁则优先用谁,没有则向上找。
    • 间接通过成员方法访问成员变量:该方法属于谁就优先用谁,没有则向上找。
  2. 子类与父类成员方法重名,创建的对象是谁就优先用谁,否则就向上找。

继承中对方法进行覆盖重写

要求

1.字符类成员方法名称一样,参数列表也一样,@Override 写在方法前面,用来检测是不是有效的正确覆盖重写。(这个注解要是不写,只要满足要求,也是正确的方法覆盖重写)

2.子类方法的返回值必须小于等于父类方法的返回值。

:父类中返回值类型为String类,子类中为Object类,这样是不行的,子类返回值大于父类。

3.子类方法的权限必须大于等于父类方法的权限修饰符

:public > protected > (default) > private
这个(default)不是关键字default,而是代表什么也不写,留空。


继承关系中的构造方法

1.子类构造方法中有一个默认隐含的“super()”调用,所以一定是先调用的父类构造,后执行的子类构造

2.可以通过super关键字来子类构造调用父类重载构造

3.super的父类构造调用,必须是子类构造的第一个语句,不能一个子类构造调用多次super构造

父类构造方法

public Fu() {System.out.println("这是一个父类无参构造方法");}

public Fu(int num) {System.out.println("这是一个父类有参构造方法");}

子类构造方法

public Zi(){
    //        super();  //调用父类无参构造方法
    super(20);      //调用父类重载的构造方法
    System.out.println("这是一个子类构造方法");
}

 public Zi(int num){
    System.out.println("这是一个有参子类构造方法");
}

主方法

输入

public static void main(String[] args) {Zi zi = new Zi();}

输出

这是一个父类有参构造方法(子类的无参构造中调用了父类的有参构造)

这是一个子类构造方法(子类的无参构造方法)

输入

public static void main(String[] args) {Zi zi = new Zi(10);}

输出

这是一个父类无参构造方法(子类的有参构造方法中默认隐含一个父类的无参构造方法)

这是一个有参子类构造方法(子类的有参构造方法)


继承中相关的抽象方法

抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束。

抽象类:抽象方法所在的类,必须是抽象类才行,在class前加上abstract关键字即可。

如何使用抽象类和抽象方法:

  1. 不能直接创建new抽象类对象。

  2. 必须用一个子类继承抽象父类。

  3. 子类必须覆盖重写父类中的所有抽象方法。

    覆盖重写(实现):去掉abstract关键字,补上{方法体}。

  4. 创建子类对象进行使用。


以上就是有关于继承的一些知识的简要概述,如需知道更多请自己查询相关资料。

  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信