java 接口

(python中也有抽象类和借口类的概念,但我从来没有到过,可能层次比较低)

一、概念

1、接口是多个类的语法规范

2、语法

public interface 接口名{}

3、注意

a、一个接口可以被多个实现类 实现

b、接口不能被实例化

二、实现类

1、作用:实现接口

2、语法

public class 实现类名 implements 接口名 {}

3、注意

实现类可以继承多个接口

三、组成

1、常量

A、语法

public interface MyInterfaceVar {
    public static final int MAX_AGE = 100;
}

B、注意事项:

a、常量名称大写且用下划线法则

b、常量必须赋值

c、常量既可以通过实现类调用,也可以通过接口调用

d、public static final 可以省略不写

2、抽象类

A、语法

public interface MyInterfaceA {
    public abstract void method();
}

B、注意事项

a、抽象方法在实现类中必须 overrider,若不overrider 这个实现类,就必须要是抽象类

b、实现类继承多个接口,且接口中有相同的抽象方法时,实现类只要重写一个即可

c、public abstract 可以省略不写

d、实现类的对象可以调用抽象方法

例子

1 package cn.wt.test.Demon01;
2 
3 public interface MyInterfaceA {
4     public abstract void methodA();
5     public abstract void method();
6 }
MyInterfaceA.java
1 package cn.wt.test.Demon01;
2 
3 public interface MyInterfaceB {
4     public abstract void method();
5     public abstract void methodB();
6 }
MyInterfaceB
 1 package cn.wt.test.Demon01;
 2 
 3 public class MyInterImp implements MyInterfaceA, MyInterfaceB{
 4 
 5     @Override
 6     public void methodA() {
 7         System.out.println("接口A的抽象方法");
 8     }
 9 
10     @Override
11     public void method() {
12         System.out.println("接口的抽象方法");
13     }
14 
15     @Override
16     public void methodB() {
17         System.out.println("接口B的抽象方法");
18     }
19 }
MyInterImp.java
 1 package cn.wt.test.Demon01;
 2 
 3 public class Demon {
 4     public static void main(String[] args) {
 5         MyInterImp imp = new MyInterImp();
 6         imp.methodA();
 7         imp.method();
 8         imp.methodB();
 9     }
10 }
Demon

3、默认方法

A、作用

a、接口 添加新的方法时,不需要像抽象类这样,在每一个实现类 中都要 overrider

b、默认方法可以在实现类中重写

B、语法

public interface MyInterfaceC {
    public default void method(){
        System.out.println("接口C中的默认方法");
    }
}

C、注意事项

1、public 可以省略不写

2、实现类的对象可以调用 默认方法

3、当拥有多个接口,且默认方法的名称相同时,实现类 必须要重写 默认方法

例子

 1 package cn.wt.test.Demon01;
 2 
 3 public interface MyInterfaceC {
 4 
 5     public default void methodC(){
 6         System.out.println("接口C中的C方法");
 7     }
 8 
 9     public default void method(){
10         System.out.println("接口C中的默认方法");
11     }
12 }
MyInterfaceC
 1 package cn.wt.test.Demon01;
 2 
 3 public interface MyInterfaceD {
 4     public default void methodD(){
 5         System.out.println("接口D中的D方法");
 6     }
 7 
 8     public default void method(){
 9         System.out.println("接口D中的默认方法");
10     }
11 }
MyInterfaceD
1 package cn.wt.test.Demon01;
2 
3 public class MyInterImp2 implements MyInterfaceC, MyInterfaceD {
4 
5     @Override
6     public void method() {
7         System.out.println("默认方法汇总");
8     }
9 }
MyInterImp2
 1 package cn.wt.test.Demon01;
 2 
 3 public class Demon02 {
 4     public static void main(String[] args) {
 5         MyInterImp2 imp2 = new MyInterImp2();
 6         imp2.method();
 7         imp2.methodD();
 8         imp2.methodC();
 9     }
10 }
Demon02

4、静态方法

概念:与类中的静态方法相似

A、语法

public interface MyInterfaceA {
    public static void method(){
        System.out.println("接口A中的静态方法");
    }
}

B、注意事项

可以直接使用接口调用静态类

例子

public interface MyInterfaceA {
    public static void method(){
        System.out.println("接口A中的静态方法");
    }
}
MyInterfaceA.java
1 package cn.wt.test.Demon01.demon02;
2 
3 public class Demon {
4     public static void main(String[] args) {
5         MyInterfaceA.method();
6     }
7 }
Demon

5、私有方法

A、作用

默认方法和静态方法中有重复的代码块,进行再一步封装

B、语法

分类

1、私有普通方法

private 返回值类型 方法名称(参数列表){
         方法体      
}

2、私有静态方法

private static 返回值类型 方法名称(参数列表){
    方法体    
}

C、注意

这个是版本1.9 以上才有的功能(明天写,网络不好或者是我党的原因,官网下载失败)

四、其它注意事项

1、接口中不能有static块和 构造方法

2、类是单继承,接口可以多继承即:一个接口可以 implement 多个接口

3、一个类即继承又实现接口,当父类和接口中的方法发送冲突时(方法名相同),以父类的方法为优先

4、一个类实现多个接口,且接口中有重名的抽象方法,重写一次即可

5、一个类继承多个接口,且接口中有重名的默认方法,默认方法必须在实现类中overrider

6、接口中的静态方法,可可以使用接口直接调用,所有不使用实现类也没关系                                                                                                                                                                                                                                                                                                                                       

posted @ 2020-01-21 17:20  市丸银  阅读(170)  评论(0编辑  收藏  举报