Java开发必备点11_接口

2022-10-26 12:05:17

接口

接口的概念

生活中的接口: usb  hdmi vga  dp   type-c

usb接口:1994年  由微软 IBM  因特尔 共同指定的一种标准协议

程序中的接口:特殊的抽象类  规定了接口的使用者和接口实现者之间的规范

接口的定义和特点

定义的语法:interface  接口名{}

特点:1.接口中的属性都是公开静态常量  都是用publicstaticfinal 修饰的2.接口中的方法都是公开抽象方法  都是用publicabstract 修饰的3.接口中没有构造方法
注意:
接口中属性如果没有加修饰符 默认是公开静态常量
接口中方法如果没有加修饰符 默认是公开抽象方法
案例:packagecn.baizhi.day12;publicclassDemo{}//抽象类abstractclassTest{//属性int a=10;//实例变量staticint b=20;//类变量publicstaticfinalintC=40;//公开静态常量//方法//抽象方法publicabstractvoidm1();//一般的成员方法publicvoidm2(){}//静态方法publicstaticvoidm3(){}//构造方法publicTest(){super();}}//接口interface IA{//属性都是公开静态常量publicstaticfinalintA=10;//方法都是公开抽象方法publicabstractvoidm1();//没有构造方法/*public IA(){
		
	}*/}

接口的实现类

语法:
实现类implements  接口{}


注意:1.如果一个类实现了一个接口,如果这个类不想成为抽象类,那么这个类必须实现接口中所有方法2.接口没有构造方法 也没有对象 更不能手动去new
案例:定义一个类 实现这个接口packagecn.baizhi.day12;publicclassDemo{}//抽象类abstractclassTest{//属性int a=10;//实例变量staticint b=20;//类变量publicstaticfinalintC=40;//公开静态常量//方法//抽象方法publicabstractvoidm1();//一般的成员方法publicvoidm2(){}//静态方法publicstaticvoidm3(){}//构造方法publicTest(){super();}}//接口interface IA{//属性都是公开静态常量publicstaticfinalintA=10;//方法都是公开抽象方法publicabstractvoidm1();//没有构造方法/*public IA(){
		
	}*/}//2 把类变为抽象类abstractclassClassAimplements IA{/* 1 实现所有的方法
	public void m1() {
		// TODO Auto-generated method stub
		
	}*/}


案例:packagecn.baizhi.day12;publicclassDemo{publicstaticvoidmain(String[] args){IA aIa=newClassA();
		aIa.m1();}}//抽象类abstractclassTest{//属性int a=10;//实例变量staticint b=20;//类变量publicstaticfinalintC=40;//公开静态常量//方法//抽象方法publicabstractvoidm1();//一般的成员方法publicvoidm2(){}//静态方法publicstaticvoidm3(){}//构造方法publicTest(){super();}}//接口interface IA{int a=10;voidm1();/*//属性都是公开静态常量
	public static final int A = 10;
	//方法都是公开抽象方法
	public abstract void m1();
	
	//没有构造方法
	public IA(){
		
	}*/}//2 把类变为抽象类classClassAimplements IA{//1 实现所有的方法publicvoidm1(){System.out.println("实现类的m1");// TODO Auto-generated method stub}publicvoidm2(){}}

接口和类之间的关系

类和类之间
类和类之间是单继承 可以多层继承
接口和接口之间
接口和接口之间是多继承关系  一个接口可以有多个父接口
语法:interface  子接口名extends 父接口1,父接口2{}
注意:当一个类实现的接口有多个父接口时 必须实现所有接口中的方法
案例: 定义一个接口 IA  定义一个 IB接口  定义IC接口  继承  IA IBpackagecn.baizhi.day12;publicclassDemo{publicstaticvoidmain(String[] args){IA aIa=newClassA();IB bIb=newClassA();IC cIc=newClassA();
		
		aIa.m1();
		
		bIb.m2();
		
		cIc.m1();
		cIc.m2();
		cIc.m3();}}//IAinterface IA{voidm1();}//IBinterface IB{voidm2();}//ICinterface ICextends IA,IB{voidm3();}//定义一个类 ClassA  实现 IC接口classClassAimplements IC{@Overridepublicvoidm1(){// TODO Auto-generated method stubSystem.out.println("m1");}@Overridepublicvoidm2(){// TODO Auto-generated method stubSystem.out.println("m2");}@Overridepublicvoidm3(){// TODO Auto-generated method stubSystem.out.println("m3");}}
接口和类之间
接口和类之间是多实现的关系  一个类可以实现多个接口
语法:class  类名implements  接口1,接口2{

}
注意:当一个类实现了多个接口  这个类必须实现所有接口的方法
案例: 在上一个案例的基础上 再定义 ID接口ClassA 实现 IC 和 ID 接口packagecn.baizhi.day12;publicclassDemo{publicstaticvoidmain(String[] args){IA aIa=newClassA();IB bIb=newClassA();IC cIc=newClassA();ID dId=newClassA();
		aIa.m1();
		
		bIb.m2();
		
		cIc.m1();
		cIc.m2();
		cIc.m3();
		dId.m4();}}//IAinterface IA{voidm1();}//IBinterface IB{voidm2();}//ICinterface ICextends IA,IB{voidm3();}//ID接口interface ID{voidm4();}//定义一个类 ClassA  实现 IC接口classClassAimplements IC,ID{@Overridepublicvoidm1(){// TODO Auto-generated method stubSystem.out.println("m1");}@Overridepublicvoidm2(){// TODO Auto-generated method stubSystem.out.println("m2");}@Overridepublicvoidm3(){// TODO Auto-generated method stubSystem.out.println("m3");}
s@Overridepublicvoidm4(){// TODO Auto-generated method stubSystem.out.println("m4");}}
综合案例:描述一个最复杂的类 一个类继承一个类 实现了多个接口 其中的一个接口有多个父接口
注意:当一个类继承一个类,又实现了接口,必须先继承后实现接口packagecn.baizhi.day12;publicclassDemo{publicstaticvoidmain(String[] args){IA aIa=newClassA();
		aIa.m1();IB bIb=newClassA();
		bIb.m2();IC cIc=newClassA();
		cIc.m1();
		cIc.m2();
		cIc.m3();ID dId=newClassA();
		dId.m4();ClassB classB=newClassA();
		classB.m5();ClassA classA=newClassA();
		classA.m1();
		classA.m2();
		classA.m3();
		classA.m4();
		classA.m5();
		classA.m6();ClassA classA=newClassA();System.out.println(classAinstanceof IA);System.out.println(classAinstanceof IB);System.out.println(classAinstanceof IC);System.out.println(classAinstanceof ID);System.out.println(classAinstanceofClassB);}}//IAinterface IA{voidm1();}//IBinterface IB{voidm2();}//ICinterface ICextends IA,IB{voidm3();}//ID接口interface ID{voidm4();}//定义ClassB 是A的父类classClassB{publicvoidm5(){System.out.println("ClassB m5");}}//定义一个类 ClassA  实现 IC接口classClassAextendsClassBimplements IC,ID{@Overridepublicvoidm1(){// TODO Auto-generated method stubSystem.out.println("m1");}@Overridepublicvoidm2(){// TODO Auto-generated method stubSystem.out.println("m2");}@Overridepublicvoidm3(){// TODO Auto-generated method stubSystem.out.println("m3");}@Overridepublicvoidm4(){// TODO Auto-generated method stubSystem.out.println("m4");}publicvoidm5(){System.out.println("ClassA m5");}publicvoidm6(){System.out.println("自己的方法 m6");}}

接口的应用

扩展子类的功能
案例:  定义一个动物类   定义n个子类  狗  猫  鱼  鸭子  老虎 狼。。。。packagecn.baizhi.day12;publicclassTestAnimal{publicstaticvoidmain(String[] args){Animal[] animals={newDog(),newDog(),newDog(),newDog(),newCat(),newCat(),newCat(),newCat(),newCat(),newFish(),newFish(),newFish(),newFish(),newFish(),newTiger(),newTiger(),newTiger(),newTiger(),newTiger(),newWolf(),newWolf(),newWolf(),newWolf(),newWolf(),newDuck()};// 计数器int count=0;// 挑出数组中可以作为宠物的 cat dog fishfor(int i=0; i< animals.length; i++){if(animals[i]instanceofPet){
				count++;System.out.println(animals[i]);}}System.out.println("宠物的个数:"+ count);}}// 定义一个接口 Pet 次要的功能interfacePet{}// 定义动物类abstractclassAnimal{publicabstractvoideat();publicabstractvoidsleep();}// 狗classDogextendsAnimalimplementsPet{@Overridepublicvoideat(){// TODO Auto-generated method stub}@Overridepublicvoidsleep(){// TODO Auto-generated method stub}}// 猫classCatextendsAnimalimplementsPet{@Overridepublicvoideat(){// TODO Auto-generated method stub}@Overridepublicvoidsleep(){// TODO Auto-generated method stub}}// 鱼classFishextendsAnimalimplementsPet{@Overridepublicvoideat(){// TODO Auto-generated method stub}@Overridepublicvoidsleep(){// TODO Auto-generated method stub}}// 鸭子classDuckextendsAnimal{@Overridepublicvoideat(){// TODO Auto-generated method stub}@Overridepublicvoidsleep(){// TODO Auto-generated method stub}}// 老虎classTigerextendsAnimal{@Overridepublicvoideat(){// TODO Auto-generated method stub}@Overridepublicvoidsleep(){// TODO Auto-generated method stub}}// 狼classWolfextendsAnimal{@Overridepublicvoideat(){// TODO Auto-generated method stub}@Overridepublicvoidsleep(){// TODO Auto-generated method stub}}

案例: 定义一个手机类    vivo(拍照
  • 作者:北夷烟雪江中雨
  • 原文链接:https://blog.csdn.net/qq_40828705/article/details/117414909
    更新时间:2022-10-26 12:05:17