Java 接口 interface

//接口是用来定义一组规范(方法)。
//接口可以包含2部分内容
//属性
// 必须是public static final 修饰的。即只能定义常量。
//方法
// 必须是public abstract修饰的。
//上述修饰符可以省略,因为默认就是上述修饰符。

public static final int a = 10;
public final int b = 20;
public int c = 30;
int d = 40;

//修饰接口里的属性,必须只能使用public、static、final
//protected static final int e = 100;

//接口定义的是标准,即只告诉有什么方法,不实现。
//遵守接口的类去实现 接口中声明的方法。
//public、abstract

public abstract void method1() ;
public void method2();
void method3();

}

/*

  • jd-gui.exe
  • java的反编译工具。能把.class反编译成.java文件。
  • 你就可以看到这个类的内部代码。
    //一旦一个类实现了某个接口,说明通过这个类的对象
    //调用接口中的方法是安全的。
    //之所安全,是因为这个类实现了接口中定义的全部方法。
    A a = new A();
    a.method1();
    a.method2();
    a.method3();

//接口有说明用?
//定义规范、定义功能。
//它能够扩展一个类的功能。

//接口和继承的区别
//项目 接口 继承
//关键字 interface class
//实现关键字 implements extends
//方法 public abstract public、protected、abstract、static、private、final
//属性 public static final public、protected、private、static、final
//方法有无实现 无 普通方法有实现,抽象方法无实现
//多继承 多继承(类遵守多个接口) 单继承

//接口与继承的共性
//项目 接口 继承
//扩展类 能 能
//实例化 不能 非抽象类可以实例化,抽象类不可以

//如果一个类是抽象类,这个类也是可以遵守接口规范的,只不过由子类
//来实现接口中的方法。

//感觉继承和接口都能扩展一个类,好像没什么大的差异。
//什么时候使用继承,什么时候使用接口呢?

//继承的好处是:(扩展属性和方法)
// 可以继承特征和行为。可以继承父类的属性以及父类的方法。
// 如果子类和父类有很多相似处的时候,应该使用继承,减少代码的冗余
// 子类只能继承一个父类。无法继承多个父类。

//接口:(扩展方法)
// 只能扩展方法,无法扩展属性。
//(你的属性改不了,而且你的属性是类属性,而不是对象属性)。
//好处:一个类可以实现很多个接口。变相实现了多继承。
//ADAPHero 继承于Hero,实现了AD、AP接口,多了物理攻击、魔法攻击的行为。
//jdk8之后,接口功能得到加强。
//可以定义默认方法(有方法体的方法)
// 使用default关键字定义
//可以定义静态方法(static)
public interface JDK8Interface {
public abstract void method1();

/*
* 为什么要有默认方法?
* 接口定义完是不是要有类去实现?
* 是。
* 接口的实现类要实现接口中的几个方法?
* 全部。
*
* 如果没有默认方法,你往一个已知的接口里增加了新的方法
* 会怎么样?
* 例如:你有一个接口,有50个类实现了这个接口。
* 你做升级,往这个接口里加了一个方法。
* 会产生什么影响?
* 50个都要实现新加的方法。
* 如果接口中能提供默认实现,是不是50个类就不用全部修改了?
* 想重写接口默认实现的,重写新加的方法。
* 不想重写的,也没有什么影响。
*
* */

default void method2() {
	System.out.println("这是jdk8新特性,可以为接口增加默认方法");
}

static void method() {
	System.out.println("jdk8新特性,接口可以增加静态方法");
}

}

//接口的静态方法,只能通过接口名调用。
//不能通过实现类的对象以及实现类类名去调用
//空接口,没有定义任何方法的接口。
//系统API其实存在空接口。
//仅仅做一个标识作用。加标签、做分组(多态用的)
//使用接口作为引用类型。它指的是引用了实现接口的实现类。
//接口可以继承接口,接口可以继承多个接口。!!!!!!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值