接口

接口

接口是程序设计的结果

接口是一个特殊的类

接口都是抽象方法

 

特点:

接口中都是抽象方法

通过interface关键字来创建接口

通过implements让子类来实现

可以理解成,接口是一个特殊的抽象类

接口突破了java的单继承的局限性

接口和类之间可以多实现,接口和接口之间可以多继承

接口是对外暴露的规则,是一套开发规范

接口提高了程勋的功能扩展,降低了耦合性


====================================================================
public class A1 {
public static void main(String[] args) {
//Father f = new Father();不能被实例化
Father f = new Son(); //多态对象,只能调用左面 提供的功能
f.get();
f.save();
f.update();
}
}

//1, interface定义接口 -- 都是抽象方法
//1.1 接口是一个特殊的抽象类,特殊在 。。。都是抽象方法
interface Father{
public abstract void save();
public abstract void get();
public abstract void update();
}

//2, implements使用接口 -- 让实现类 和 接口间 产生实现关系
//2.1 实现类 实现接口后,,,,,要么重写所有的 抽象方法 , 否则就是一个抽象的实现类
class Son implements Father{
public void save(){
System.out.println(1);
}
;
public void get(){
System.out.println(2);
};
public void update(){
System.out.println(3);
};
}

abstract class Son2 implements Father{}

 

====================================================================

public class C9 {
public static void main(String[] args) {

Inter in = new InterImpl();
System.out.println( in.age );//age是静态的
System.out.println( Inter.age );
// in.age = 20 ;//age 是final的常量
}
}
//1, 接口里的构造方法 有吗? -- 没有-- Interfaces cannot have constructors
interface Inter {
// public Inter() { }
//2, 接口里有变量吗? -- 没有!!!!
//会为你的 简写的 变量自动拼接 public static final
//public static final int age = 10 ;
int age = 10 ;
//3, 接口里的方法都是抽象的,可以简写吗? -- 可以
//会为你简写的方法自动拼接 public abstract
// public abstract void save() ;
abstract void save() ;
//TODO 4, 接口里可以有 普通方法吗?
//-- jdk1.8以前没有,1.8可以添加static或者default的普通方法
static void save2() { }
// default void save2() { }

}
class InterImpl extends Object implements Inter{
public InterImpl() {
//找不到接口里的无参构造, 实际上是执行了Object提供的无参构造
super() ;
}
//TODO 重写抽象方法,否则是一个抽象类
@Override
public void save() {
System.out.println("save....");
}
}

 

总结 : 
1, 接口里有构造方法吗? -- 没有
2, 接口的实现类创建对象时, 构造方法里隐藏的suepr()找的谁? -- Object
3, 接口里有变量吗? -- 没有,都是常量,可以简写 .
会为简写的常量自动拼接public static final
4, 接口里的方法都是抽象方法 -- 可以简写 .
会为简写方法拼接 public abstract
5, 接口里的资源默认都是 public 的 .


posted @ 2020-10-19 19:29  Liang-shi  阅读(180)  评论(0)    收藏  举报