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();
}
}