面向对象三大特性-继承性

发布时间 2023-10-26 16:35:37作者: 柒酒

1.继承性的理解

生活上:财产继承、颜值继承 代码层面 自上而下:定义一个类A,在定义另一个类B时,发现类B的功能与类A相似,考虑类B继承于类A 自下而上:定义了类B,C,等,发现B、C有类似的属性和方法,则可以考虑将相同的属性和方法进行抽取, 封装到类A中,让类B、C继承类A,同时B、C中的相同的功能就看可以删除了

2.继承性的好处

继承的出现减少了代码的冗余,提高了代码的复用性 继承的出现,更便于功能的扩展 继承的出现让类于类之间产生了is-a的关系,为多态的使用提供了前提 -继承描述事物之间的所属关系,这种关系时:is-a的关系。可见,父类更通用、更一般,子类更具体 注意:不要仅为了其他类中某个功能而去继承

3.继承的格式

class A{ //属性、方法 } class B extends A{

}

继承中的基本概念 类A:父类、superClass、超类、基类 类B:子类、subClass、派生类

4.有了继承性以后

子类就获取到了父类中声明的所有属性和方法 但是,由于封装性的影响,可能子类不能直接调用父类中的属性或方法 子类在继承父类以后,还可以扩展自己特有的功能(体现:增加自己特有的属性或方法) 子类和父类的理解:要区别于集合和子集 不要为了继承而继承,在继承之前,判断一下是否有is-a的关系

5.默认的父类:

java中声明的类,如果没有显示的声明其父类,则默认继承于java.lang.Object

6.补充说明 Java支持多层继承(继承体系) >直接父类、间接父类 一个父类可以有多个子类,一个子类只能有一个父类 Java只支持单继承,不支持多重继承

java中的子父类的概率是相对的

6.代码实现

Person(父类)

package Oop2.atguigu03_extends;

public class Person {
    //属性
    String name;
    private int age;

    public void eat(){
        System.out.println("人吃饭");
    }
    public void sleep(){
        System.out.println("人吃饭");
    }
    public void show(){
        System.out.println("age:"+age);
    }

    public int getAge() {
        return age;
    }

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

Student类(子类)

package Oop2.atguigu03_extends;

public class Student extends Person{
    //属性
//    String name;
//    int age;

    String school;

//
    public void eat(){
        System.out.println("人吃饭");
    }
    public void sleep(){
        System.out.println("人吃饭");
    }
    public void study(){
        System.out.println("学生学习");
    }

    public void show1(){
//        System.out.println("age:"+age);
        System.out.println("age:"+getAge());
    }
}