java 接口总结

1.1接口的概念

接口在java中其实是多个类的公共规范,是一种引用数据类型。

例如,电脑接口上的usb接口,鼠标,键盘,u盘都是符合这个接口的设备

1.2语法规则

public interface 接口名称{
// 抽象方法
(public abstract) void method1(); // public abstract 是固定搭配,可以不写
//public void method2();
//abstract void method3();
void method4();
// 注意:在接口中上述写法都是抽象方法。
}

1.3接口的使用

接口不能直接使用,需要有一个实现类来实现该接口,实现接口中所有的抽象方法,需要使用关键字implements,关键字表示类和接口之间是实现的关系

public class 类名称 implements 接口名称{
// ...
}

1.4接口的特性

1.接口的类是抽象的,无法被直接实例化,接口类型属于引用类型

2.接口中的每个方法默认指定被Public abstract修饰,不能使用其他限定符

3.接口中的无法在接口中实现,只能在实现的类中实现

4.在实现类中重写接口方法的时候不能使用default修饰方法,因为接口中的抽象方法被public修饰

5.接口中可以有变量,但是默认被final public static修饰,无法修改

public interface USB {
double num = 3.0; // 默认被:final public static修饰
}
public class TestUSB {
public static void main(String[] args) {
System.out.println(USB.num); // 可以直接通过接口名访问,说明是静态的



// 编译报错:Error:(12, 12) java: 无法为最终变量brand分配值
USB.brand = 2.0; // 说明brand具有final属性
}
}

6.接口中不能有静态代码块和构造方法

7.如果实现类中并没有实现接口的所有方法,那么这个实现类也必须设置成抽象类

8. 接口虽然不是类,但是接口编译完成后字节码文件的后缀格式也是.class

9. jdk8中:接口中还可以包含default方法。

1.5实现多个接口

java 中,类只能继承自一个父类(java不支持多继承),但是可以实现多个接口

public class demo1 {
    class Animal{
        protected String name;

        public Animal(String name) {
            this.name = name;
        }
    }
    interface Run{
        void run();
    }
    interface Swim{
        void swim();
    }
    class Cat extends Animal implements Run{
        public Cat(String name) {
            super(name);
        }
        @Override
        public void run() {
            System.out.println(this.name+"正在跑");
        }
    }
    class Fish extends Animal implements Swim{
        public Fish(String name) {
            super(name);
        }
        @Override
        public void swim() {
            System.out.println(this.name+"正在游");
        }
    }
class Bigduck extends Animal implements Swim , Run{
    public Bigduck(String name) {
        super(name);
    }

    @Override
    public void run() {
        System.out.println(this.name+"在跑着");
    }

    @Override
    public void swim() {
        System.out.println(this.name+"在游着");
    }
}
    public  void main1() {
        Cat cat = new Cat("章章");
        Fish fish = new Fish("峰峰");
        Bigduck bigduck=new Bigduck("章峰");
    }

1.6接口的继承

接口之间也可以实现继承,例如可以写一个接口来继承会跑的和会游泳的

interface Liangxi extends Swim , Run {
        @Override
        public default void run() {
            
        }

        @Override
        public default void swim() {

        }
    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值