Java接口与多态

1.一个类可以实现多个接口

2.一个类可以从一个类派生(子类)同时实现n个接口

3.接口可以嵌套

4.接口支持常量(final)

5.接口可以继承


package cn.zzx.base.demo;

public interface  PC{
//	public String start();   //接口不能用private修饰符
	public void start();	//接口默认是public
	public void stop(); 
	
	
}
package cn.zzx.base.demo;
/**
 * 
 * PC是接口
 * 接口的子类是SoundCard
 */
public class SoundCard implements PC {     

	@Override
	/*public String start() {
		return "声卡启动";

	}*/
/**
 * 重写start()方法
 */
	public void start() {
		System.out.println("声卡启动");

	}
/**
 * 重写stop()方法
 */
	@Override
	public void stop() {
		System.out.println("声卡关闭");

	}

}
package cn.zzx.base.demo;

import java.io.PrintStream;

public class NetworkCard implements PC {

//	private Breakdown p = new Breakdown();

	@Override
	/*public String start() {
		return "网卡启动";

	}*/
/**
 * 重写start()方法
 */
	public void start() {
		System.out.println("网卡启动"); 

	}
/**
 * 重写stop()方法
 */
	@Override
	public void stop() {
		System.out.println("网卡关闭");

	}

	/*public void fault(PC obj) {
		this.p.print(obj.start());
	}*/

}
package cn.zzx.base.demo;

public class Test {

	public static void main(String[] args) {
		PC pc = new  SoundCard();    //子类赋值给接口,创建实例
		pc.start();					//实例调用start方法
		pc.stop();
		
		PC pc2 = new NetworkCard();
		pc2.start();
		pc2.stop();
		
		/*SoundCard s = new SoundCard();
		NetworkCard n = new NetworkCard();
		
		n.fault(s);
		n.fault(n);
		*/

	}

}

使用fault的方法时,参数可以是任何PC接口的实现类的对象,不必为不同的类型建立不同的fault


package cn.zzx.base.demo;

public interface  PC{
	public String start();   //接口不能用private修饰符
//	public void start();	//接口默认是public
	public void stop(); 
	
	
}
package cn.zzx.base.demo;
/**
 * 
 * PC是接口
 * 接口的子类是SoundCard
 */
public class SoundCard implements PC {     

	@Override
	public String start() {
		return "声卡启动";

	}
/**
 * 重写start()方法
 */
/*	public void start() {
		System.out.println("声卡启动");

	}*/
/**
 * 重写stop()方法
 */
	@Override
	public void stop() {
		System.out.println("声卡关闭");

	}

}
package cn.zzx.base.demo;



public class NetworkCard implements PC {

	private Breakdown p = new Breakdown();

	@Override
	public String start() {
		return "网卡启动";

	}
/**
 * 重写start()方法
 */
	/*public void start() {
		System.out.println("网卡启动"); 

	}*/
/**
 * 重写stop()方法
 */
	@Override
	public void stop() {
		System.out.println("网卡关闭");

	}

	public void fault(PC obj) {       //fault方法可以实现可扩展性
		this.p.print(obj.start());
	}

}
package cn.zzx.base.demo;


public class Breakdown {     //实现print方法,可以实现相同性

	public void print(String start) {
		System.out.println(start);
		System.out.println("出现故障");

	}

}
package cn.zzx.base.demo;

public class Test {

	public static void main(String[] args) {
		/*PC pc = new  SoundCard();    //子类赋值给接口,创建实例
		pc.start();					//实例调用start方法
		pc.stop();
		
		PC pc2 = new NetworkCard();
		pc2.start();
		pc2.stop();*/
		
		SoundCard s = new SoundCard();    
		NetworkCard n = new NetworkCard();
		
		n.fault(s);  //实例调用fault方法,传给参数调用实例
		n.fault(n);
		

	}

}

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路来了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值