继承

12.继承

  • 类与类之间当有一定关系(例:狗属于动物)时可以用继承extends(Dog extends Animal)
  • 子类(派生类)继承父类(基类)后集成父类的所有成员(成员变量和方法),方法公有(权限修饰符)
  • java一个子类只能有一个父类,不能继承多个类
  • 子类构造方法执行之前会先执行父类构造但没有创建父类对象
  • 虚拟机会自动先调用父类无参构造再执行子类构造;但父类如果没有无参构造,子类中必须显示调用父类构造
  • super()在子类构造方法的首行;
  • 自定义的类会默认继承Object类,Object类是整个继承体系的根基类

员工类

public class Employee {
    private int id;
    private String name;
    private char gender;
    private double salary;

    public Employee(){
        System.out.println("父类构造执行了");
    }

    public Employee(int id, String name, char gender, double salary) {
        this.id = id;
        this.name = name;
        this.gender = gender;
        this.salary = salary;
        System.out.println("Father: " + this);
    }
    //.....getter setter方法
}

程序员类继承了员工类

public class SoftwareEngineer extends Employee {
    private int hot;

    public SoftwareEngineer() {

        System.out.println("子类构造了");
    }

    public SoftwareEngineer(int id, String name, char gender, double salary, int hot) {
        super(id, name, gender, salary);
        this.hot = hot;
        System.out.println("son: " + this);
    }

    public void show() {
        System.out.println(" 编号是" + getId() + " 姓名是 " + getName() + " 工资是 " + getSalary());
    }

    public int getHot() {
        return hot;
    }

    public void setHot(int hot) {
        this.hot = hot;
    }
}

super关键字

  • this指代当前对象,super指代父类
  • 在子类中显示调用父类构造方法的时候出现在首行
  • 子类成员和父类成员重名时(子类再次声明了同样的成员),使用super指代子类成员
public class Dog extends Animal {
    private String color;
    private int age;

    public void run() {
        System.out.println("年龄:" + age);
        //使用super指代父类的方法
        System.out.println("继承下的年龄:" + super.getAge());
    }

    public Dog() {
    }

    public Dog(String name, int age, String color) {
        //使用super调用父类构造
        super(name, age);
        this.color = color;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

方法的重写

  • 子类对于继承下来的方法实现不满意的时候可以重写
  • overwrite重写(注释)
  • 重写注意点:子类的方法名,参数列表,返回值类型和父亲一模一样
  • 父类的方法权限修饰符比子类更加严格
  • 方法重载在指本类中 方法名相同参数列表不同;而重写发生在继承关系前提下

权限修饰符

  • 修饰成员变量和方法的修饰符 public protected 缺省 private
  • 修饰class 使用public 缺省

那些地方可以访问

修饰符类内部同一个包子类
privateY
缺省的(不写)YY
protectedYYY
publicYYY
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值