面向对象编程三大特征之继承

本文介绍了Java中的继承概念,以提高代码复用性和维护性。通过实例展示了如何创建子类并继承父类的属性和方法,强调了子类必须调用父类构造器的重要性,并讨论了继承带来的好处和细节问题,如访问权限、构造器的调用规则等。同时,文章提醒读者避免滥用继承,确保子类与父类之间的is-a关系成立。
摘要由CSDN通过智能技术生成

一、面向对象编程-继承

1)为什么需要继承?

案例:我们编写了两个类,一个是Pupil类(小学生),一个是Graduate(大学毕业生)

问题:两个类的属性和方法有很多是相同的,怎么办?

这就需要用到继承:(提高代码的复用性)

访问修饰符的访问范围

二、继承的基本介绍和示意图

1)继承的基本介绍

继承可以解决代码复用 , 让我们的编程更加靠近人类思维 . 当多个类存在相同的属性 ( 变量 ) 和方法时 , 可以从这些类中 抽象出父类, 在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过 extends 来 声明继承父类即可。

2)继承的示意图

 3)继承的基本语法

class 子类 extends 父类{

}

1)子类就会拥有父类定义的属性和方法

2)父类又叫做 超类 基类

3)子类又叫做派生类

三、入门案例

学生类

package com.Student;

import java.sql.SQLOutput;

public class Student_ {
    public String name;
    public int age ;
    private double score;


    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
    public void info(){
        System.out.println("学生"+name+"今年"+age+"岁了"+"考了"+score);
    }
}

小学生类

package com.Student;

public class pupil extends Student_ {

}

大学生类

package com.Student;

public class Graduate extends Student_{

}

main类

package com.Student;

public class Test {
    public static void main(String[] args) {
        Graduate graduate = new Graduate();
        graduate.setAge(18);
        graduate.setName("jack");
        graduate.setScore(100);
        pupil pupil = new pupil();
        pupil.setAge(17);
        pupil.setName("rose");
        pupil.setScore(150);
        graduate.info();
        pupil.info();
    }
}

四、继承的好处

1)代码的复用性提高了
2) 代码的扩展性和维护性提高了
 

 

五、细节问题(重要)

1) 子类继承了所有的属性和方法,非私有的属性和方法可以在子类直接访问 , 但是私有属性和方法不能在子类直接访问,需要通过父类提供公共的方法去访问
2) 子类必须调用父类的构造器, 完成父类的初始化
3) 当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用 super 去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译 不会通过( 怎么理解。 )
4) 如果希望指定去调用父类的某个构造器,则显式的调用一下 : super( 参数列表 )
5) super 在使用时,必须放在构造器第一行 (super 只能在构造器中使用 )
6) super() this() 都只能放在构造器第一行,因此这两个方法不能共存在一个构造器
7) java 所有类都是 Object 类的子类 , Object 是所有类的基类 .
8) 父类构造器的调用不限于直接父类!将一直往上追溯直到 Object ( 顶级父类 )
9) 子类最多只能继承一个父类 ( 指直接继承 ) ,即 java 中是单继承机制。
思考:如何让 A 类继承 B 类和 C 类? 【 A 继承 B B 继承 C
10) 不能滥用继承,子类和父类之间必须满足 is-a 的逻辑关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值