接口 接口和抽象类的区别

1.接口

更加严格的要求子类去实现父类的方法

当不同类中有相同的行为

1、解耦:作用:类跟类打散掉,强制约束子类必须把方法实现

2、强制约束子类实现方法

3、多根继承

        不能new

        如果在里面定义变量,需要变为常量并且赋值;

        接口可以继承接口

父类
public abstract class Door{
	public String color;
	public String size;
	
	public abstract void open(){
	}
	public abstract void close(){
	}
}
public abstract class Lock{		//abstract 抽象类
	public String name;
	
	public abstract void open();
	
	public abstract void close();
}
接口
  //interface 接口的方法都不能实现
public interface OpenClose{
	public final String NAME="张三";//写在接口的任何一个属性,变量都必须是常量并且赋值
	public void open();
	
	public void close();
} 
子类实现父类
  public class PushDoor implements OpenClose{		//implements 实现接口
	public void close(){
		System.out.println("pull door");
	}
	public void open(){
		System.out.println("pash door");
	}
}
public class PasswordLock implements OpenClose{
	public void open(){
		System.out.println("输入密码");
	}
	public void close(){
		System.out.println("打乱密码");
	}
}
测试类把前面的都实现
public class Java17{
	public void openDoorOrlock(OpenClose oc){
		oc.open();
		oc.close();
	}
	//解耦	作用:类跟类打散掉,强制约束子类必须把方法实现
	//约束
	//多跟继承
	public static void main(String [] args){
		Java17 md=new Java17();
		//PushDoor door=new PushDoor();
		PasswordLock lock=new PasswordLock();
		//md.openDoorOrlock(door);
		md.openDoorOrlock(lock);
	}
}

2.抽象类 和 接口的区别

抽象类不一定有抽象方法,但含有抽象方法的类一定是抽象类

接口可以实现多继承,son extends father ,mather

普通类既可以继承类,又可以实现接口

public interface Grapha{	//顶级接口
	public void testGrapha();
}

public interface Father extends Grapha{
	public void testFather();
	public void work();
}

public interface Son extends Father,Mather{
	public void testSon();
}

public interface Mather extends Grapha{
	public void testMather();
	public void work();
}

public class Teacher{
	public void skill(){
		System.out.println("Java技能");
	}
}

public class People extends  Teacher implements Son{
	//作为常规类可以继承教师技能,也可以实现一堆接口
	//实现一个类继承多个接口
	public void testSon(){
		System.out.println("美女");
	}
	public void testFather(){
		System.out.println("挣钱");
	}
	public void testGrapha(){
		System.out.println("房子");
	}
	public void testMather(){
		System.out.println("成才");
	}
	public void work(){
		System.out.println("工作");
	}
	public static void main (String [] args){
		People m = new People();
		m.testSon();
		m.testFather();
		m.testGrapha();
		m.testMather();
		m.work();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值