继承——extends关键字,super关键字

本文详细探讨了Java中的继承概念,包括extends关键字的使用,成员变量与继承的关系,super关键字的访问方式,以及继承与构造方法、成员方法的相互影响。通过实例解析了初始化子类时必须先初始化父类的原因,并介绍了super调用父类构造方法的规则。此外,还讨论了方法重写的情况。
摘要由CSDN通过智能技术生成

目录

引出继承思想

继承知识点,extends关键字

继承与成员变量的关系

super关键字

继承与构造方法的关系

继承与成员方法的关系


引出继承思想

class Father{
    String name;
    int age;
    Father(){}

    //getXxx()和setXxx()
    public void study(){
        System.out.println("学习");
    }
}

class Son{
    String name;
    int age;
    Son(){}

    //getXxx()和setXxx()
    public void study(){
        System.out.println("学习");
    }
}

通过观察我们发现,这两个类的name和age这两个成员变量以及study()成员方法都是相同的,如果我们还继续定义其他的儿子类,父亲类等,每定义一次这样的类,就要把重复的内容再写一遍。

能不能把这些相同的内容定义到一个独立的类中,然后,让其他的类与这个独立的类产生一个关系,这些其他的类就具备了这个独立的类的功能

为了解决这个问题,java提供了一个思想——继承

继承:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可

通过extends关键字可以实现类与类的继承

继承知识点,extends关键字

1.语句定义格式

     class 子类名 extends 父类名{...}

     举例:class Fu{}

                class Zi extends Fu{}

     单独的这个类称为父类,基类或者超类;这多个类可以称为子类,派生类 

class Human {
    String name;
    int age;

    //getXxx()和setXxx()
    public void study() {
        System.out.println("学习");
    }
}

class Father extends Human {

}

class Son extends Father {

}

public class ExtendsDemo {
    public static void main(String[] args) {
        //创建一个父亲对象
        Father f1 = new Father();
        f1.study();

        //创建一个儿子对象
        Son s1 = new Son();
        s1.study();
    }
}

2.继承的好处 

1)提高了代码的复用性

2)提供了代码的维护性(如果功能的代码需要修改,修改一处即可)

3)让类与类之间产生关系(为后面学习多态做铺垫:要有继承才有多态)

3.继承的坏处

类的耦合性增强

打破了封装性

开发的原则:低耦合,高内聚

(耦合:类与类的关系;内聚:类自己本身可以完成的事情)

4.有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,还可以定义自己的新成员 

class Person {
    String name;
    int age;

    Person() {
    }

    //getXxx()和setXxx()

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

    public void study() {
        System.out.println("学习");
    }
}

//学生类继承人类之后,拥有了人类中的成员变量和成员方法,也可以自己定义自己类特有的成员变量和成员方法
class Student3 extends Person {
    String id;

    public void playGame() {
        System.out.println("打游戏");
    }
}

class Teacher3 extends Person {

}

public class ExtendsDemo2 {
    public static void main(String[] args) {
        //创建一个学生
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

+7_big data

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值