【Java】接口

目录

1.接口的概念

2.接口的格式

3.接口的使用

4.接口的特性

4.1接口是一种引用类型,但是不能通过直接new接口的对象

4.2接口中的方法只能public修饰

4.3接口中的方法不能在接口实现

4.4重写接口方法时,不能使用默认的访问权限

4.5接口中的变量默认被final public static修饰

4.6接口中不可以有静态代码块,构造方法

4.7接口虽然不是类,但接口编译后的字节码文件也是.class

4.8如果类没有实现接口中所有的抽象方法,则必须设置成抽象类

5.实现多个接口

6.接口之间的继承


1.接口的概念

        现实中的接口:

        电脑上的USB上,可以插:键盘、鼠标……

        电源上的插孔上,可以插:手机,电脑……

        Java中的接口,你可以把它当作一个特殊的类,不同的是接口的成员没有执行体,是由全局常量和公共的抽象方法所组成。


2.接口的格式

        把定义类中的class换成interface就可以了。

public interface 接口名称{
    //抽象方法,以下四种都可以
    public abstract void method1();
    public void method2();
    abstract void method3();
    void method4();
}

细节:

  • 接口名称一般用形容词;
  • 接口名称一般在前面加一个 ' I ';
  • 接口中的方法和属性前面最好啥都不写,保持代码的简洁性;

3.接口的使用

  •  接口不能直接使用,必须要有一个“实现类”实现该接口,实现该接口中的所有方法;
  • 接口与类之间通过implements来实现;
public class 类名称 implements 接口名称{
    //……
}

4.接口的特性

4.1接口是一种引用类型,但是不能通过直接new接口的对象

public interface USB{
    void method();
}    
public class Test4 {
    public static void main(String[] args) {
        USB usb = new USB();//编译错误
    }
}

4.2接口中的方法只能public修饰

public interface USB{
    //private void method();//此处不可以使用private
    void method();          //默认 public abstract
}

4.3接口中的方法不能在接口实现

public interface USB{
    void method();
//下面错误代码
    void method1(){
        System.out.println("编译错误");
    }
}

4.4重写接口方法时,不能使用默认的访问权限

interface USB{
    void method1();//默认public
    void method2();//默认public
}
class Mouse implements USB{

    @Override
    void method1() {//编译报错,不能使用默认修饰符
        System.out.println("打开鼠标");
    }

    @Override
    public void method2() {
        System.out.println("打开鼠标");
    }
}

4.5接口中的变量默认被final public static修饰

interface USB{
    int a = 0;
} 
public class Test4 {
    public static void main(String[] args) {
        System.out.println(USB.a);//可以通过接口名访问,说明是静态的
        //USB.a = 1; 编译错误,说明是不可修改的变量     
    }
}

4.6接口中不可以有静态代码块,构造方法

4.7接口虽然不是类,但接口编译后的字节码文件也是.class

4.8如果类没有实现接口中所有的抽象方法,则必须设置成抽象类

5.实现多个接口

        Java中,一个子类只能继承一个父类,但是一个类可以实现多个接口。

        举例:

//会跑的
interface IRunning{
    void run();
}
//会飞的
interface IFlying{
    void fly();
}
//会游的
interface ISwimming{
    void swim();
}
//狗类,会跑,会游
class Dog implements IRunning,ISwimming{
    public Dog() {
    }

    @Override
    public void run() {
        
    }

    @Override
    public void swim() {

    }
}

6.接口之间的继承

        在Java中,类与类之间是单继承,一个类可以继承多个接口,接口与接口可以实现多继承。利用接口可以实现多继承的目的。

        相当于把多个接口拼在一起。

interface IRunning {
  void run();
}
interface ISwimming {
  void swim();
}
// 两栖的动物, 既能跑, 也能游
interface IAmphibious extends IRunning, ISwimming {
}
class Frog implements IAmphibious {
...
}

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值