0
点赞
收藏
分享

微信扫一扫

接口和多态

1.接口就是多个类的公共规范

接口是一种引用数据类型,最重要的内容就是其中的:抽象方法

如何定义一个接口的格式:

public interface 接口名称{
}

备注:换成了关键字interface之后,编译生成的字节码文件仍然是:.java --> .class

如果是java7,那么接口中可以包含的内容有:1.常量 2.抽象方法

java8,还可额外包含有:默认方法,静态方法

java9.额外包含有:私有方法。

2.接口中抽象方法的定义:

 

1 /*在任何java版本中,接口都能定义抽象方法。
 2 格式:
 3 public abstract 返回值类型 方法名称(参数列表);
 4 
 5 注意事项:
 6 1.接口当中的抽象方法,修饰符必须是两个固定关键字,public abstract
 7 2.这两个关键字修饰符,可以选择型省略,
 8 */
 9 public interface Demo01Interface {
10     //以下四种都是抽象方法
11     public abstract void methodAbs1();
12     abstract  void methodAbs2();
13     public void methodAbs3();
14     void methodAbs4();
15 }

3.接口抽象方法的使用

1 public interface Demo01Interface {
 2     //以下四种都是抽象方法
 3     public abstract void methodAbs1();
 4     abstract  void methodAbs2();
 5     public void methodAbs3();
 6     void methodAbs4();
 7 
 8 
 9 
10 public class MyInterfaceAbstractImpl implements Demo01Interface{
11 
12     @Override
13     public void methodAbs1() {
14         System.out.println("这是第一个方法");
15     }
16 
17     @Override
18     public void methodAbs2() {
19         System.out.println("这是第二个方法");
20 
21     }
22 
23     @Override
24     public void methodAbs3() {
25         System.out.println("这是第三个方法");
26 
27     }
28 
29     @Override
30     public void methodAbs4() {
31         System.out.println("这是第四个方法");
32 
33     }
34 }
35 
36 
37 
38 接口的使用步骤:
39 1.接口不能直接使用,必须有一个“实现类”来“实现”该接口
40 格式:
41 public class 实现类名称 implements 接口名称{
42 
43 }
44 2.接口的实现类必须覆盖重写(实现)接口中所有的抽象方法
45 实现:去掉abstract关键字,加上方法体大括号。
46 3.创建实现类的对象,进行使用
47 注意事项:如果实现类并没有覆盖重写接口中所有的抽象方法,那么这个实现类自己必须是抽象类。
48 */
49 public class DemoInterface {
50     public static void main(String[] args) {
51         //错误写法,不能直接new接口对象使用
52         //Demo01Interface demo = new Demo01Interface();
53         //创建实现类的对象使用
54         MyInterfaceAbstractImpl inter = new MyInterfaceAbstractImpl();
55         inter.methodAbs1();
56         inter.methodAbs2();
57         inter.methodAbs3();
58         inter.methodAbs4();
59 
60     }
61 }

4.接口的默认定义方法

1 public interface InterfaceDefault {
 2     //抽象方法
 3     public abstract void methodAbs();
 4     //新增加了一个抽象方法
 5    // public abstract void methodAbs2();
 6 
 7     public default void methodDefault(){
 8         System.out.println("这是新添加的默认方法");
 9     }
10 
11 }
12 
13 
14 
15 
16 public class MyInterfaceDefaultA implements InterfaceDefault{
17     @Override
18     public void methodAbs(){
19         System.out.println("实现了抽象方法,AAA");
20     }
21 
22     @Override
23     public void methodDefault(){
24         System.out.println("实现类A覆盖重写了接口的默认方法");
25     }
26 
27 }
28 
29 
30 public class MyInterfaceDefaultB implements InterfaceDefault{
31 
32     @Override
33     public void methodAbs() {
34         System.out.println("实现了抽象方法:BBB");
35     }
36 }
37 
38 
39 public class Demo02Interface {
40     public static void main(String[] args) {
41         //创建了实现类对象
42         MyInterfaceDefaultA m = new MyInterfaceDefaultA();
43         //调用抽象方法,实际运行的是右侧的实现类
44         m.methodAbs(); //实现了抽象方法,AAA
45 
46         //实现类A覆盖重写了接口的默认方法
47         m.methodDefault(); //实现类A覆盖重写了接口的默认方法
48         System.out.println("-----------------");
49 
50         MyInterfaceDefaultB m1 = new MyInterfaceDefaultB();
51         m1.methodAbs(); //实现了抽象方法:BBB
52         m1.methodDefault();//这是新添加的默认方法
53     }
54 }

 



举报

相关推荐

0 条评论