Java自学笔记(九)

接口

这里直接给出定义方式(关于概念,先把它当作是一个抽象类,确实有些类似,但是略有不同,抽象类概括的是某物的本质,接口是某物外的性质)


public interface 接口名称{
            抽象方法……
}(所以接口不能实例化对象,抽象方法了)

接口里面的成员变量其实是常量,声明方式为: public static final int i = 1;如果不书写 public static final,其实默认也是书写的,但是为了规范代码,在定义成员变量的时候还是这么做吧。
接口里面同样可以定义方法,但是 只能是抽象方法,声明方式为: public abstract  返回值类型 方法名(给定参数类型 参数名),同上边一样,即使声明中只有 void method(), 默认public abstract。接口里面就public行得通,可以这么记忆。

类与接口的关系

类可以 实现接口,关键字implements,

格式:
class 类 implements 接口名{
重写接口的抽象方法
}
注意:定义的类必须重写所有接口的抽象方法之后,才可以实例化使用,不然会该类还是抽象类的(这点跟抽象类的继承类似)

接口也可以多实现

interface Fu1
{
	void func1();
}

interface Fu2
{
	void func2();
}
class Zi implements Fu1,Fu2// 实现多接口。
{
	public void func1(){}
	public void func2(){}  //再次注意重写方法,去掉abstract,补充方法体
}

还有其它组合,例如子类继承父类,父类再实现接口

class Fu {
	public void func(){}
}
interface jiekou {
	pulbic abstract void newFunc();
}
class Zi extends Fu implements jiekou {
	public void newFunc() {
	}  //这样子类重写的接口方法就可以调用了,还可以使用父类func方法的功能
}

接口与接口之间的关系,其实也是继承,对比类不同的是,接口之间的继承,是可以多继承的(因为是抽象方法的缘故,子类实现不会发生找不到重写后的抽象方法)。

interface Fu1{
	void func1();
}
interface Fu2{
	void func2();
}
interface Fu3{
	void func3();
}
interface Zi extends Fu1,Fu2,Fu3{
	void func();
}

小结,类与接口的相互关系

类与类的关系:继承 ,可以多层继承,但是不允许多继承,类可以是抽象类,然后涉及到抽象方法及子类重写的问题。
类与接口的关系:实现 ,除了一个类实现接口,可以再类继承的关系上实现接口,而且是实现多个接口
接口与接口关系:继承,可以多继承。

猜你喜欢

转载自blog.csdn.net/weixin_40211315/article/details/79576693
今日推荐