子类到底能继承父类中的哪些内容

1.构造方法是否可以被继承?

父类的构造方法不可以被子类继承;

2.对于成员变量来说,不论是私有的还是非私有的,子类都可以继承;

只不过非私有的子类不可以直接用;

3.继承中,成员变量和成员方法访问的特点:

(一)成员变量的访问特点:

遵循就近原则;super指父类;

class Fu{

String name="Fu";

String hobby="喝茶“;

}

class Zi extends Fu{

String name="Zi";

String game="吃鸡";

public void shou(){

System.out.println(this.name);//Zi

System.out.println(super.name);//Fu

System.out.println(super.hobby);//喝茶

System.out.println(this.game);//吃鸡

}

}

总结来说,继承中成员变量访问特点就是先在局部位置找,本类成员位置找,父类成员位置找,逐级往上找。

(二)成员方法的访问特点:

直接调用满足就近原则,谁离我近我就用谁;

super调用,直接访问父类;

4.方法的重写

当父类的方法不能满足子类心在的需求时,需要进行方法重写;

书写格式:在继承体系中,子类出现了和父类一摸一样的方法声明,我们就称子类这个方法是重写的方法;

@Override重写注解:

@Override是放在重写后的方法上,校验子类重写时语法是否正确;

重写方法的名称,形参列表必须与父类中的一致。

建议:重写的方法尽量和父类保持一致;

只有被添加到虚方法表中的方法才能被重写;

方法重写的本质也就是覆盖虚方法中的方法;

5.继承中,构造方法的访问特点总结

子类不能继承父类的构造方法,但是可以通过super调用;

子类构造方法的第一行,有一个默认的super();

默认先访问父类中的无参的构造方法,再执行自己;

如果想要方法文父类有参构造,必须手动书写;把赋的数据写到小括号里。

6.this ,super使用总结

this:可以理解为一个变量,表示当前方法调用者的地址值;

super:代表父类存储空间;

访问成员变量:this/super.成员变量

访问成员方法:this/super.成员方法(....)

访问构造方法:this/super(....)

this访问本类,super访问父类;

7.练习:带有继承结构的标准javabean类

子类到底能继承父类中的哪些内容_第1张图片

public class Employee {
    //1.见名知意
    //2.所有的成员变量都需要私有
    //3.构造方法(空参,带全部参数的构造)
    //4.get/set


    private String id;
    private String name;
    private double salary;

    public Employee() {
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public Employee(String id, String name, double salary) {
        this.id = id;
        this.name = name;
        this.salary = salary;
    }
    public void work(){
        System.out.println("员工在工作");
    }
    public void eat(){
        System.out.println("吃米饭");
    }
}
public class Cook extends Employee{
    public Cook() {
    }

    public Cook(String id, String name, double salary) {
        super(id, name, salary);
    }

    @Override
    public void work() {
        System.out.println("厨师正在炒菜");
    }
}
public class Manager extends Employee {
private double bouns;

    public Manager() {
    }
    public Manager(String id, String name, double salary, double bouns) {
        super(id, name, salary);
        this.bouns = bouns;
    }

    public double getBouns() {
        return bouns;
    }

    public void setBouns(double bouns) {
        this.bouns = bouns;
    }

    @Override
    public void work() {
        System.out.println("管理其他人");
    }
}



public class Test {
    public static void main(String[] args){
        //创建对象并赋值调用
        Manager m=new Manager("001","张三",15000,80000);
   System.out.println(m.getId()+","+m.getName()+","
           +m.getSalary()+","+m.getBouns());
   m.work();
   m.eat();

   Cook c=new Cook();
   c.setId("002");
   c.setName("李四");
   c.setSalary(8000);
   System.out.println(c.getId()+","+c.getName()+","
           +c.getSalary());
c.work();
c.eat();
//001,张三,15000.0,80000.0
//管理其他人
//吃米饭
//002,李四,8000.0
//厨师正在炒菜
//吃米饭

    }
}

你可能感兴趣的:(java,开发语言)