MEC@JavaSE@基础篇@笔记17@接口

接口

接口介绍

接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用。

 接口的定义和特点

定义格式:

//接口用关键字interface来定义
public interface 接口名 {} 

接口的特点:

  • 接口不能实例化

  • 接口和类之间是实现关系,通过implements关键字表示

    public class 类名 implements 接口名 {}

  • 接口的子类(实现类)

    要么重写接口中的所有抽象方法

    要么是抽象类

  • 接口和类的实现关系,可以单实现,也可以多实现。

public class 类名 implements 接口名1 ,  接口名2 {}

代码示例:

//定义第一个接口
public interface Inter {
    public abstract void study();
}
//定义第二个接口
public interface InterA {
    public abstract void method1();
​
    public abstract void method2();
​
    public abstract void study();
}
//定义实现类实现两个接口
public class InterImpl implements Inter, InterA {
​
    //实现接口要重写里面所有的抽象方法。
    @Override
    public void study() {
        System.out.println("我是实现类中的study方法");
    }
​
    @Override
    public void method1() {
​
    }
​
    @Override
    public void method2() {
​
    }
}
public class Demo1InterFace {
    /*
        接口的[定义]格式:
                public interface 接口名 {}
​
        类[实现]接口格式:
                public class 类名 implements 接口名 {}
     */
    public static void main(String[] args) {
        InterImpl ii = new InterImpl();
        ii.study();
    }
}

接口中的成员特点

  • 成员变量

    只能是公有、静态、常变量,即必须有public、static和final联合属性;

    默认修饰符:public static final

  • 构造方法

    没有构造方法(不会被实例化)

  • 成员方法

    只能是公有、抽象方法,即,必须(自动)拥有public和abstract联合属性

    默认修饰符:public abstract

    关于接口中的方法,JDK8 和 JDK9 中有一些新特性

代码示例:

public interface Inter {
    //只能是常量,默认用public static final修饰
    public static final int NUM = 10;
​
    //接口中没有构造方法
    //public Inter(){}
​
    //只能是抽象方法,默认用public abstract修饰
    public abstract void eat();
}
class InterImpl extends Object implements Inter {
​
    public InterImpl(){
        super();
    }
​
    public void show(){
        // NUM = 20;
        System.out.println(NUM);
    }
​
    //实现一个接口,要重写里面所有的抽象方法
    @Override
    public void eat() {
​
    }
}

类和接口之间的各种关系

  • 类和类的关系

    继承关系,只能单继承,但是可以多层继承。

  • 类和接口的关系

    实现关系,可以单实现,也可以多实现。

    还可以在继承一个类的同时实现多个接口。

  • 接口和接口的关系

    继承关系,可以单继承,也可以多继承。

代码示例1:

public class DemoInterface {
    /*
        类和接口:
                实现关系, 可以单实现, 也可以多实现.
                并且可以在继承一个类的同时, 实现多个接口.
     */
    public static void main(String[] args) {
        Zi z = new Zi();
        z.method();
        z.method1();
        z.method2();
    }
}
​
class Fu {
    public void method() {
        System.out.println("Fu类中的method方法");
    }
}
​
interface InterA {
    void method1();
}
​
interface InterB {
    void method2();
}
​
interface InterC{
    void method();
}
​
//实现一个接口,要重写里面所有的抽象方法。
class Zi extends Fu implements InterA, InterB, InterC {
​
    @Override
    public void method1() {
        System.out.println("Zi类重写后的method1方法");
    }
​
    @Override
    public void method2() {
        System.out.println("Zi类重写后的method2方法");
    }
}
​

代码示例2:

interface InterA {
    void method1();
}
​
interface InterB {
    void method2();
}
​
//接口和接口之间是多继承关系
interface InterC extends InterA, InterB {
    void method3();
}
​
//实现一个接口,要重写里面所有的抽象方法。
//而且当前接口所有父接口的抽象方法也要重写。
class InterCImpl implements InterC {
​
    @Override
    public void method1() {
​
    }
​
    @Override
    public void method2() {
​
    }
​
    @Override
    public void method3() {
​
    }
}

接口的特点及作用

1、海纳百川——类型的统一与保护

2、政令统一——规范方法

凡是实现了这个接口的非抽象类,就必须实现这个接口所规定的所有抽象方法。

规范方法的“规范”,主要体现一下几点:

1)指定的所有方法都必须实现,且一个都不能少;

2)规范了方法的名称;

3)规范了方法的参数个数与参数类型;

4)规范了方法的返回值类型。

3、广而告之——方法的公开

4、面向未来——分离原则

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值