接口:实现、继承
接口interface
属于引用类型,可以看作是特殊的类——是全局常量和公共抽象方法的集合
每个接口都被编译成独立的字节码文件。
声明的语法格式
interface 接口名{
全局常量声明
抽象方法声明
}
例:
//用interface声明接口
interface Parent{ //俩等价于
String name; //public static final String name; 全局变量
void say(); //public abstract void say(); 抽象方法
}
接口中定义的变量和方法都包含默认的修饰符。
定义的变量的默认声明 public static final ——全局变量
定义的方法的默认声明 public abstract ——抽象方法
接口的实现
与抽象类相似,接口中包含抽象方法。
所以不能直接实例化接口,就是不能使用new 创建接口的实例
实现多个接口的语法格式:
class 类名 implements 接口列表{
属性和方法;
}
package test1;
//interface声明Person
interface Person{
void say();
}
//interface声明Parent
interface Parent{
void word();
}
//就用implements同时实现两个接口
class Child implements Person,Parent{
public void work(){
System.out.println("Study!");
}
public void say(){
System.out.println("Child");
}
}
//调用say() work()
public class Class1 {
public static void main(String[] args){
Child c = new Child();
c.say();
c.work();
}}
接口的继承
用extends来实现,与类的继承相似
继承父接口的时候,会得到其中定义的所有的抽象方法和常量
但又不同,接口可以多重继承,就一次性可以认很多个干爹,人称小吕布
这里是 定义了两个接口
让Parent继承Person,但是当Child实现Parent接口的时候 要晒父类的所有方法 ,但是很离谱我的bug了
需要指出的是任何实现接口的类,必须实现该接口继承的所有接口,除非类被声明为abstract
interface 接口名 接口列表{
全局常量声明
抽象方法声明
}
package test1;
//interface声明接口
interface Person{
void say();
}
//用extends继承接口
interface Parent extends Person{
void work();
}
//用implements实现接口Parent
class Child implements Parent{
public void work(){
System.out.println("Study!");
}
public void say(){
System.out.println("Child");
}
}
public class Class1 {
public static void main(String[] args){
Child c = new Child();
c.say();
c.work();
}}
Child
Study!
抽象类和接口的相同之处:
都有抽象方法、都不能被实例化、都是引用类型
抽象类和接口的不同之处:
接口可以多重继承,抽象类仅单继承
含义 :接口是一个类的外围能力,不是核心特征 ;抽象类是后代的核心特征
下一节:多态
---------------------------
“朝着一个既定的方向去努力,就算没有天赋,在时间的积累下应该也能稍稍有点成就吧。”