目录
问题引入
接口
什么是接口
接口的特点
简单理解接口
接口的实现
TV接口及其实现
Controlor接口及其实现
注意
情景实现
代码
输出
问题引入
在面向对象的世界里,不妨设想,我们打开电视需要些什么呢?显然的,首先要有三个对象,即要看电视的人,一台电视,以及一个遥控器。看电视的过程又大致可以分为三步,即:
- 人按下遥控器打开电视
- 电视开机显示画面
- 人看电视
在这个问题中,我们不难想到,无论什么样的电视,都应该具有”开机并显示画面“的功能(小米的也好,TCL的也罢),同样的,无论什么样的电视遥控器,都应该具有”打开电视“的功能 。
诚然,电视机和遥控器都有不同品牌,但毫无疑问它们都有上述功能,由这点,我们想到可以使用接口加以实现。
接口
什么是接口
我们用interface关键字来声明接口,接口也是一种类,只不过该类是绝对抽象的,规范性很强。
接口的特点
首先,接口内的方法必须且默认全部为抽象方法,这也就意味着:
- 想要接口被实现,其中的每个方法都必须被实现
- 方法不能用private修饰
除此以外还有以下三点:
- 接口无构造方法
- 接口内的属性全为常量(必须且默认被static final修饰)
- 不能被实例化(因为绝对抽象)
简单理解接口
首先,接口是一种类,类是具有相同属性和行为的对象的集合。但接口有些特殊,在接口中,属性显得不那么重要(反正是常量,没得改),而更加强调行为,因此,接口可以说是从行为的抽象中产生的,且具有强规范性,这可以避免许多不必要的错误。
接口的实现
我们用implements关键字来声明一个类应当实现的接口,如上文所说,一旦决定实现某个接口,其中的所有方法都必须被实现,用于实现接口的类也被称为接口的”实现类“。
TV接口及其实现
interface TV {void display(Controlor controlor) ;
}class XiaoMiTV implements TV{@Overridepublic void display(Controlor controlor) {System.out.println("小米电视打开");}
}
Controlor接口及其实现
//遥控器接口
interface Controlor {void open();
}class XiaoMiControlor implements Controlor{@Overridepublic void open() {System.out.println("按下小米遥控器");}
}
注意
我们说接口内的方法必须全为抽象方法,这是就大部分情况而论,但有两种例外:
- 静态代码块
- Java1.8后,在方法前显式声明default访问权限
情景实现
代码
public class Main {public static void main(String[] args) {Person person = new Person() ;person.watch(new XiaoMiTV() ,new XiaoMiControlor());}
}//遥控器接口
interface Controlor {void open();
}//电视接口
interface TV {void display(Controlor controlor) ;
}//电视接口实现
class XiaoMiTV implements TV{@Overridepublic void display(Controlor controlor) {System.out.println("小米电视打开");}
}//遥控器接口实现
class XiaoMiControlor implements Controlor{@Overridepublic void open() {System.out.println("按下小米遥控器");}
}class Person {public void watch(TV tv ,Controlor controlor){controlor.open();tv.display(controlor);System.out.println("看电视");}
}
输出
本篇博客就到此结束了,新手上路,如有错误,还望海涵!