Java面向对象(继承)

    技术2026-08-17  15

    继承

    继承的优势:

    1.可以减少代码的重复率

    2.关键字:extends    (c#::)

    3.super:指代父类的对象   this:指代当前对象

    比如创建一个宠物类,宠物有猫、狗、小猪……

    我们可以把宠物们共有的属性单独提取出来一个类

    public class Pet{ //定义宠物共有的属性 private String name;//宠物姓名 private int health;//宠物健康值 private double weight;//体重…… } //定义set和get访问器 public String getName() { return name; } public int getIove() { return love; } public int getHealth() { return health; } //定义无参 public Pet(){ System.out.println("这是父类的无参构造!"); } public Pet(String name){ this.name=name; } //定义带参 public Pet(String name, int love, int health) { this(name); //this.name = name; this.love =love; this.health = health; } //定义方法 public void print(){ System.out.println("姓名:{0},爱心值:{1},健康值: {2}"+this.name+this.love+this.health); }

    定义子类特有的属性

    ps:super关键字的含义:

    1.调用父类的属性、方法、构造

    调用属性:super.name;

    调用方法:super.方法名();

    调用构造:super();无参  super(带参参数);

    public class Dog extends Pet{//子类 继承 父类 //定义特有的属性 private String strain;//品种 //定义s和g public String getStrain() { return strain; } //定义无参 public Dog(){} //定义带参 public Dog(String strain,String name,int love,int health) { super(name,love,health); this.strain = strain; } //定义业务方法 public void cs(){ //调用父类的属性进行输出 super.getIove(); System.out.println(super.name); System.out.println(super.health); } } public class Cat extends Pet { //属性 private String sex; //g和s访问器 public String getSex() { return sex; } //无参 public Penguin(){} //带参 public Penguin(String sex) { super(); this.sex = sex; } //方法 public void show(){ System.out.println("我的性别是"+this.sex); } }

    4.this  super调用构造时必须位于代码第一行

    两者不能在同一个构造中出现

    两者不能在同一个方法中出现

    //带参 public Penguin(String sex) { super(); this.health;//代码会报错 this.sex=sex;//不会报错 }

    5.子类不可以继承父类的东西

    private修饰的成员

    构造函数(可以使用 不可以继承)

    不在同一个包下、使用默认权限的成员

    6.继承的初始化顺序:先父类再子类

    ps:除非在子类中使用super调用父类的带参构造

    …………下次写抽象类   88

     

     

    Processed: 0.008, SQL: 9