Java中的继承

作者: 小虎哥的技术博客 | 来源:发表于2022-07-25 23:40 被阅读0次

0、继承使子类获得父类public、protected类型的字段和方法。

一句话:子类继承父类,子类有了父类所有的publicprotected类型的字段和方法。相当于你自己原封不动的把相关代码复制粘贴过来是一样的效果。

// 父类 人
public class People {
    // 姓名
    public String name = "未知";

    // 年龄
    protected int age = 0;

    private String sex = "未知";

    public void eat() {
        System.out.println("吃饭");
    }

    protected void sleep() {
        System.out.println("睡觉");
    }

    private void play(){
        System.out.println("玩");
    }
}
// 子类 学生
public class Student extends People {

}
public class Demo {
    public static void main(String[] args) {
        Student student = new Student();
        System.out.println(student.age);
        System.out.println(student.name);
        // System.out.println(student.sex); 报错
        student.eat();
        student.sleep();
        // student.play(); 报错
    }
}

Student extends People子类继承父类。子类Student里面什么代码都没写,但是可以使用agename字段,并且可以调用eat()sleep()方法。
但是无法使用sex字段和play()方法。

1、子类重写(覆盖)父类字段和方法

// 父类 人
public class People {
    // 姓名
    public String name = "人名未知";

    public void eat() {
        System.out.println("人吃饭");
    }
}
// 子类 学生
public class Student extends People {
    public String name = "学生名未知";

    @Override
    public void eat() {
        // super.eat(); 在这可以调用父类的eat()方法
        System.out.println("学生吃饭");
    }

    public void eatOther() {
        // 父类的eat
        super.eat();
        // 子类的eat
        eat();
    }
}
public class Demo {
    public static void main(String[] args) {
        Student student = new Student();
        System.out.println(student.name); // 结果:学生名未知
        student.eat(); // 结果:学生吃饭
        student.eatOther(); // 结果:人吃饭 学生吃饭
    }
}

name字段父类有,子类也有,父类字段就被重写(覆盖)了。

eat()方法父类有,子类也有(方法返回值 方法名 参数都一样),父类方法就被重写(覆盖)了。方法重写(覆盖)必须加上@Override注解。

如果一个字段或方法被重写(覆盖)了,那我还想继续使用父类的字段或方法怎么办,可以用super关键字,如super.namesuper.eat()

2、抽象类

abstract修饰的方法是抽象方法(如下eat()方法),一个类如果有抽象方法那么这个类必须是抽象类(abstract修饰的类)。

抽象类可以没有抽象方法,但是有抽象方法的必须是抽象类。抽象类可以有正常方法,如下sleep()方法。

子类如果不是抽象类,那么必须重写(覆盖)父类抽象方法,如下Student类。子类如果是抽象类可以不必重写(覆盖)父类抽象方法,如下Teacher类。

// 父类 人
public abstract class People {

    public abstract void eat();

    public void sleep() {
        System.out.println("人睡觉");
    }
}
// 子类 学生
public class Student extends People {

    // 不重写(覆盖)会报错
    @Override
    public void eat() {
     
    }
}
// 子类 老师
public abstract class Teacher extends People {

}

3、结语

关注微信公众号:小虎哥的技术博客

每天一篇技术文章,没做到自己抽大嘴巴子,各位监督。

相关文章

  • 【JAVA】Java中的继承

    0x01 子类可以使用父类的哪些成员 父类的public,子类可以继承 protected也可以继承,不同包也能继...

  • Java初级笔记No.3(更新中)

    2018.7.26 1、Java中的继承 Java中使用extends关键字来说明继承关系。 2、继承的特性 ja...

  • Java中的继承

    一、继承特点 继承:子类可从父类中继承实例变量、实例方法,但不能继承构造器 二、子类重写父类方法 大多时候,子类总...

  • java中的继承

    继承是类与类的一种关系,是一种“is a”的关系。java中的继承是单继承的,一个类只有一个父类。 1.继承的好处...

  • Java中的继承

    继承 继承的概念: 继承是类与类的一种关系,是一种“is a”的关系 注:Java中的继承是单继承 3. 继承的好...

  • java中的继承

    继承的关键之是extends子类 extends 父类 继承的初始化顺序 初始化父类再初始化子类 先执行初始化对象...

  • java中的继承

  • Java中的继承

    继承初始化顺序 1、初始化父类再初始化子类2、先执行初始化对象中属性,再执行构造方法中的初始化 重写 1、什么是方...

  • Java中的继承

    Java中的继承 Java 继承 什么是继承 继承是用来描述“is-a”的关系;如果说两个对象A和B,若可以描述成...

  • java中的继承

    什么是继承? 在java中,难免会出现有很多类具有相同的数据和行为,它们甚至在抽象层面可以归为同一个种类。既然具有...

网友评论

    本文标题:Java中的继承

    本文链接:https://www.haomeiwen.com/subject/xninirtx.html