java中的继承

java中的继承

1.特点

继承首先是一种代码复用的体现。
它会分析出共同点,然后将相同的逻辑定义在一个类中。

以学生和老师为例:
    比如说要定义一个学生对象:
        属性:
            姓名
            年龄
            学号
            性别
        行为:
            吃
            学习
            睡觉

    在比如要定义一个老师类:
        属性:
            姓名
            性别
            年龄
            工号
        行为:
            吃
            睡觉
            讲课
   共同点(人):
   		属性:
   			姓名
   			年龄
   			性别
   		行为:
   			吃
   			睡

让老师和学生 继承 人,这样的话,它里面定义的那些属性和行为就天生具备了。
继承的格式:

class 子类 extends 父类{
}

继承的好处:

  • 提高了代码的复用性
  • 提高了代码的可维护性
  • 通过继承其实父类和子类、子类和子类之间产生了关系。而这个关系时多态的前提。

2.Java中继承的特点

  • Java中只支持单继承
    • 一个类最多只能有一个父类。
  • 多个类可以继承同一个父类
  • Java支持多层继承

3.继承中的注意事项

  • 继承只能继承父类中非私有的成员。(非private)

  • 构造方法不能被继承

    • 子类必须通过 super关键字来调用父类的构造方法。
  • 不要为了继承而继承。

    • 当问题中出现 is a 的关系的时候,考虑用继承
    • 水果和苹果。
    • 人和学生。
  • java只支持单继承

  • 一个类可以被多个子类继承

  • 支持多层继承

4.继承中成员变量的关系

当子类中的成员变量和父类中非私有的成员变量同名时,默认访问的是子类中的成员变量。
如果确实要访问父类的,需要配合 super关键字。

5.关于super/this

//父类继承下来的成员变量
super.成员变量;  


//调用父类的构造方法
super(...);


//调用父类继承下来的成员方法。
super.成员方法();
super.变量名;
this.变量名;

super.方法名();  --- 重写 override
this.方法名();

super(); 父类的构造方法
this();自己的构造方法

6.继承中构造方法的细节

子类中的所有构造方法默认都会访问父类的公共无参的构造方法
子类中所有构造方法的第一条指令,默认都是 super()
当父类没有公共无参的构造方法时,子类的构造方法中必须明确使用 super(xxx) 来调用父类的构造方法,且必须是第一条指令。

  • 当配合 this() 使用时,特例。但是不管怎么样,this() 也好 super()也好,必须是构造方法中的第一条指令。
class Fu{
    public Fu(int a){

    }
}

class Zi extends Fu{
    private int a ;
    public Zi(){
        super(2);
    }

    public Zi(int a){
        this();
    }

7.继承中成员方法的细节

当子类中不存在某些成员方法时,会自动从父类中获取。
如果子类中存在与父类非私有方法名参数列表相同的方法

  • 要求返回值也一模一样
  • 权限修饰符要求子类不能比父类(权限更小)public >protected>friendly>private
  • 在这里插入图片描述
  • 这种现象称为“方法重写(override)”

重写的应用点:

  • 子类要重新实现父类的某些功能
  • 子类扩展父类的某些功能,配合 super.父类方法() 来扩展。
  • 当父类中有静态方法时,如果子类想 “重写” ,要求子类的方法签名必须跟父类一致。但是静态方法不能出现super /this
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值