接口

时间:2019-08-18
本文章向大家介绍接口,主要包括接口使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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 }

原文地址:https://www.cnblogs.com/had1314/p/11373881.html