【Java】继承

(一)继承

java三大特性之一(封装,继承,多态)。
继承就是子类继承父类的特征和和行为,使得子类对象(实例)具有父类的实例域和方法,还可以以此基础添加新方法和域来满足需求。
继承需要符合的关系是:is-a,父类更通用,子类更具体。
java不支持多继承,即一个子类只能拥有一个父类。
子类对象实例化时一定先实例化父类对象。
java中,所有继承都是公有继承,子类拥有父类非private属性和方法。
已存在类:父类,超类,基类,新生类:子类,派生类,孩子类。


(二)案例(格式)

    public class Employee{
    //添加方法和域
    }
    
    //子类继承父类
    public class Manager Employee{
    //添加方法和域
    }

(三)方法覆盖

超类中的有些方法对子类不一定适用,需要子类提供一个新的方法来覆盖超类中的这个方法:

//超类
public class Employee{
...
    public double getSalary(){
    return salary;
    }
}

//子类,经理类不仅仅是返回工资 还有奖金的
public class Manager extends Employee{
...
    //覆盖超类的getSalary方法
    public double getSalary(){
    return salary+bonus; //不起作用
    }
}

上述覆盖是不起作用的,因为子类不能直接访问超类(员工类)的私有域,所以可以使用特定关键字super,以下是改进:

public double getSalary(){
    return super.getSalary()+bonus;
}

(四)super,this关键字

this
一是引用隐式参数。
二是调用该类其他构造器。
super
调用父类的方法。
调用父类的构造器。
通过super关键字来实现对父类成员的访问,用来引用当前对象的父类,super与this引用不是类似的概念,因为super不是一个对象引用,不能将super赋给另一个对象变量,它只是一个指示编译器调用超类方法的特殊关键字,super指向父类,this是指向自己的引用。在子类构造器中,如果要用要用super调用父类构造器,一定要放在语句第一排,一定是先初始化父类构造器再是子类。

(五)子类构造器

public Manager(String name,double salary,int year,int month,int day){
  
    //子类调用父类构造器一定要放在语句最前面  
    super(name,salary,year,month,day);
    bonus = 0;
}

因为父类的私有域子类无法访问进行初始化,所以可以通过supers实现对超类构造器的调用。
如果子类构造器没有显式的调用父类构造器,则会自动调用父类无参数的构造器,如果子类既没有显式调用,父类又没有无参数构造器,系统则会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值