接口的特性
完全抽象:接口中的方法默认都是抽象的,它不能包含实现(除非是默认方法或静态方法)。
多继承:Java不允许类继承多个类,但允许一个类实现多个接口,从而实现多继承的特性。
全局访问:接口中的所有方法默认都是public的,它们隐式地定义为public abstract。
类型检查:接口可以作为引用类型,用于引用对象,提供了一种类型检查的机制。
默认方法:从Java 8开始,接口可以包含默认方法,即带有实现的方法。
静态方法:接口也可以包含静态方法,这些方法可以在不实例化接口的情况下直接调用。
package cn.zy.cellphone;
/接口是一种引用数据类型。使用interface声明接口,形式
* 形式:public interface 接口名称{}
* 接口不能拥有构造方法,不能用于创建对象
*接口可以多继承。一个接口可以继承多个其他接口
*列如:public interface Broadcast extends Network,Picture{}
*Broadcast接口就具备了A、B接口中定义的抽象方法。
*/
public interface Broadcast {
/接口中可以声明属性。接口中定义的所有变量都是static final类型的。
* public static final String version = "1.0";
public int count = 10; // 默认是static final类型
一般很少在接口中声明属性。
*/
package cn.zy.cellphone;
public interface Picture {
public void picture();//照相
}
package cn.zy.cellphone;
public interface Network {
public void network();//网络
}
package cn.zy.cellphone;
/一个类只能继承一个父类,同时实现多个接口。继承在前,实现在后。
* public class Photo2 extends Photo implements Network,Picture,Broadcast {}
* 实现类实现接口,必须实现接口中定义的抽象方法。
*方法即行为,表示一种功能,接口定义了一套功能,实现类必须实现这些功能 –> 实现类的能力得到拓展。
*/
//实现类(子类)
public class Photo2 extends Photo implements Network,Picture,Broadcast {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Photo2(String brand, String type, String name) {
super(brand, type);
this.setName (name);
}
/接口中定义的一些系列方法表示的是一种种的能力。接口让实现类实现这些能力,实现类的能力得到拓展和升级。
实现类根据自身特性实现接口中定义的方法。
* 特殊情况:如果一个抽象父类定义了和接口同名的抽象方法,实现类实现的是抽象父类的抽象方法。
*/
public void broadcast() {
System.out.println(this.getName()+"的手机可以播放");
}
public void picture() {
System.out.println(this.getName()+super.getBrand()+super.getType()+"的手机可以照相");
}
public void network() {
System.out.println(this.getName()+super.getBrand()+super.getType()+"的手机可以播放上网");
}
/实现类(子类)Photo2 手机原本只有下面几个功能,通过接口增加了上面几个功能
* 实现类实现接口,必须实现接口中定义的抽象方法。
*方法即行为,表示一种功能,接口定义了一套功能,实现类必须实现这些功能 –> 实现类的能力得到拓展。
*/
public void sendInfo() {
System.out.println(super.getBrand()+super.getType()+"的手机发信息");
}
public void call() {
System.out.println(super.getBrand()+super.getType()+"的手机可以打电话"); java基础接口
}
public void info() {
System.out.println(super.getBrand()+super.getType()+"的手机可以发短信");
}
}
package cn.zy.cellphone;
//实现类(子类)
public class Photo1 extends Photo implements Broadcast {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Photo1() {
super();
}
public Photo1(String brand, String type,String name) {
super(brand,type);
this.setName(name);
}
public void broadcast() {
System.out.println(this.getName()+"的手机可以播放");
}
public void sendInfo(){
System.out.println(super.getBrand()+super.getType()+"的手机发信息");
}
public void call(){
System.out.println(super.getBrand()+super.getType()+"的手机可以打电话");
}
public void info(){
System.out.println(super.getBrand()+super.getType()+"的手机可以发短信");
}
}
package cn.zy.cellphone;
//父类
public abstract class Photo {
private String brand;
private String type;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Photo() {
super();
}
public Photo(String brand, String type) {
super();
this.brand = brand;
this.type = type;
}
public abstract void sendInfo();
public abstract void call();
public abstract void info();
}
package cn.zy.cellphone;
//执行类
public class Test {
public static void main(String[] args) {
// 同一引用类型
Broadcast broadcast1=new Photo1("诺基亚","a01","张三");
broadcast1.broadcast();
Photo photo=new Photo1("诺基亚","a01","张三");
photo.sendInfo();
photo.call();
photo.info();
// 同一引用类型
Broadcast broadcast2=new Photo1("苹果X","11S","李四");
broadcast2.broadcast();
// 实例不同, 对同一方法的执行结果不同
Picture picture1=new Photo2("苹果X","11S","李四");
picture1.picture();
Network network1=new Photo2("苹果X","11S","李四");
network1.network();
//多态
Photo photo1=new Photo1("苹果X","11S","李四");
photo1.sendInfo();
photo1.call();
photo1.info();
/
* 接口实现多态: 接口类型 引用 实现类对象
继 承实现多态: 父类类型 引用 子类对象
接口定义的方法被实现类实现,通过接口引用实现类时,调用接口中的方法时,执行的是实现类实现的方法。
实现类对象具备接口中定义的能力 是一种has a 关系
子类对象是一种父类类型 是一种is a 关系
现在的Photo1同Photo2既是实现类也是子类
*/
}
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/2144.html