接口
1.接口
1.什么是接口:接口是一种标准或者说是一种规范,和类是一个级别
语法: 【权限修饰符】 interface 接口名{}
2.访问权限修饰符 :pubic: 公共所有的地方都可以访问
默认:package 本包内
3.基于jdk不同:
jdk1.7: 1.静态常量 :接口.常量 调用
//静态常量(final) final String name="张三"; int age=20;//[默认加上public static final] public int age1=22;//默认加上 static final final int age2=23;//默认加上public static
2.抽象方法:默认抽象方法[public abstract] 返回值 方法名();
jdk1.8: 1.默认的方法 :
①default 返回值 方法名称(参数){方法体}//作用:实现接口的类对该方法进行重写,如果实现改接口的没有重写该方法,可以由子类对象对该方法进行调用;一定要加default,这个是语法规则
②接口中的默认方法的访问权限修饰符:不可以是private/protected修饰方法
③重写接口中默认方法的权限修饰符只能是public,因为接口中方法的默认权限修饰符就是public;
2.静态方法:
①使用接口名.方法名调用静态方法(因为静态方法属于接口,不属于对象)
②可以被接口的实现类重写,但是该静态方法不可以使用父类引用调用
③接口中定义的static的方法,在实现类中不能写static,才会实现重写接口中的静态方法;这和普通父类和子类的静态方法不一样,普通类必须要同时有或者同时不写
jdk1.9: 1.添加私有(private)的方法
4.接口注意要点
①接口不能被实例化,但是可以通过匿名对象的方式。
②接口被实现的关键字 implement
③一个类只能有一个直接父类,但是该类可以实现多个接口,每个接口名使用逗号隔开;
④接口有传递性,接口之间使用extends实现传递性(继承) interface 接口1 extends 接口2,接口3,接口4....
5.关于static与final:
static:静态成员,可以修饰方法 属性 内部类 属于类的成员
fianl:最终的 类(不能被继承) 属性(常量与static) 常量(不能改变)
6.接口实现多态
1.一般方式
2.匿名类的对象
3.匿名类的匿名对象
1 public class TestProduct { 2 3 public static void main(String[] args) { 4 //一般方式 5 Product pro=new Computer1(); 6 System.out.println(pro.getName()); 7 pro.getPrice(); 8 //匿名类的对象 9 Product pro1=new Product() { 10 11 @Override 12 public void getPrice() { 13 System.out.println("价格:"+500); 14 } 15 16 @Override 17 public String getName() { 18 return "篮球"; 19 } 20 }; 21 System.out.println(pro1.getName()); 22 pro1.getPrice(); 23 //匿名对象的实现类 24 String name=new Product() { 25 26 @Override 27 public void getPrice() { 28 System.out.println("价格"+599); 29 } 30 31 @Override 32 public String getName() { 33 return "足球"; 34 } 35 }.getName(); 36 System.out.println(name); 37 } 38 } 39 interface Product{ 40 String getName(); 41 void getPrice(); 42 } 43 class Computer1 implements Product{ 44 45 @Override 46 public String getName() { 47 return "联想电脑"; 48 } 49 50 @Override 51 public void getPrice() { 52 System.out.println("价格:"+4999); 53 } 54 55 }