implement, extends, super in Java

今天的Java课上楼sir讲了这三个概念,但讲的不大清楚,特此来总结学习一下。

关键字extends和implement的区别
extends: 继承
implement:接口

在C++中一个子类可以有多个父类,称之为多层继承(multiple inheritance). 但是这个特性在JAVA中是被禁止的。作为补偿,Java有一个特性称之为接口(interface), 接口是一种与类相似的结构,只包含常量和抽象方法。接口在许多方面与抽象类相似,但是它的目的是指明多个对象共同的行为。

public interface Eat{
    public abstract String EatWhat();
}
public interface Live {
    public abstract String LiveWhere();
}
class life{

}

public class Animal extends life implements Eat,Live
{
    public String LiveWhere(){
        return "Earth";
    };

    public String EatWhat(){
        return "meat";
    }


}

关键字super
super的主要作用
1. 让子类调用父类的构造方法。语法是super( ) 或者 super( parameters )。
为什么需要这么做呢,我们来看一段代码并且理解构造方法链

  class A{
        A(int i){
            i++;
        }
    }
    class B extends A{
        B(){
        }
    }// IntelliJ 警告在A类中没有默认构造函数

构造方法链:
在任何情况下,构造一个类的实例时,将会调用沿着继承链的所有父类的构造方法。当构造一个子类的对象时,子类的构造方法会在完成自己的任务前,首先调用父类的构造方法。如果父类继承其他的类,那么父类的构造方法又会在完成自己的任务前,调用父类的构造方法。这个过程持续到沿着继承体系结构的最后一个构造方法被调用为止。

我们知道,父类的构造方法是不被子类继承的。当我们new 一个B的时候,由于B类继承了A类,所以在new的过程中,先构造A再构造B,而A只有一个带参数的构造函数。所以B在构造A的时候需要给父类A的构造函数提供一个参数,这件事情由super函数来完成。需要注意的是,父类的构造方法只能在子类的构造函数中调用,并且,必须是子类构造函数的第一行!!!
如果恰巧父类中有无参数的构造函数,而子类构造函数没写super,其实默认是super().也就是说下面两段代码是等价的

class A{
        A(){}
    }
    class B extends A{
        B(){};
    }
// 等价于
class A{
        A(){}
    }
    class B extends A{
        B(){
            super();
        };
    }

2.让子类调用父类的函数
super关键字不仅可以引用父类的构造方法,也可以引用父类的方法。

class A{
    A(){}
    void print(){
        System.out.println("123");
    }
}

class B extends A{
    B(){
        super();
        super.print();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值