面向对象6

继承

继承可以看成是类与类之间的衍生关系。比如狗类是动物类,牧羊犬类又是狗类。于是我们可以说狗类继承了动物类,而牧羊犬类就继承了狗类。于是狗类就是动物类的子类(或派生类),动物类就是狗类的父类(或基类)。

所以继承需要符合的关系是:is-a,父类更通用,子类更具体。

语法:

class 子类 extends 父类

例如我们定义了一个 Animal 类,再创建一个 Dog 类,我们需要它继承 Animal 类

class Dog extends Animal {
    
    
    ...
}

先创建一个父类 Animal.java

public class Animal {
    
    
	//动物四肢的数量
    public int legNum;     

    //类方法
    public void bark() {
    
    
        System.out.println("动物叫!");
    }
}

接下来创建一个子类Dog.java

public class Dog extends Animal {
    
    
}

Dog 类继承了父类 Animal,我们 Dog 类里什么都没有写,其实它继承了父类 Animal,所以 Dog 类拥有 Animal 类的全部方法和属性(除开 private 方法和属性)。我们创建一个测试类测试一下。

public class Test{
    
    
    public static void main(String[] args) {
    
    
        Dog a = new Dog();
        a.legNum = 4;
        a.bark();
    }
}

运行结果如下:
在这里插入图片描述
为什么需要继承?

如果有两个类相似,那么它们会有许多重复的代码,导致后果就是代码量大且臃肿,后期的维护性不高。通过继承就可以解决这个问题,将两段代码中相同的部分提取出来组成一个父类,实现代码的复用。

继承的特点:

1.子类拥有父类除 private 以外的所有属性和方法
2.子类可以拥有自己的属性和方法
3.子类可以重写实现父类的方法
4.Java 中的继承是单继承,一个类只有一个父类

注: Java 实现多继承的一个办法是 implements(实现)接口

super

super关键字在子类内部使用,代表父类对象。

1.访问父类的属性 super.属性名
2.访问父类的方法 super.bark()
3.子类构造方法需要调用父类的构造方法时,在子类的构造方法体里最前面的位置:super()

猜你喜欢

转载自blog.csdn.net/qq_38530648/article/details/103709367