面向对象-接口

  • 声明接口的语法

访问修饰符 interface 接口名{ } 一般建议接口名称使用形容词

  •  如果定义public接口,则规则和定义public类一致,要求接口名称和文件名称一致 外部的接口只能使用public、默认这两个范围限定词;
  • 如果定义内部接口则可以使用4大范围限定 词 接口实际上提供了同一的操作界面(方法),如果是JDK1.8-版本则一个方法也不实现,等待某类 或某几个类去实现它的方法【接口中的所有方法必须是抽象的】。

如果使用的是JDK1.8+允许使用 default在接口中定义默认实现,这个实现允许在实现类中重新定义覆盖

public class Test1 {
public static void main(String[] args) {
IA2 a2=new A2Impl();
a2.pp();
}
}
interface IA2 {
default void pp(){
System.out.println("this is pp....");
this.ff();
}
void ff();
}
class A2Impl implements IA2{
public void ff() {
System.out.println("this is ff...");
}
}

default默认方法实现使用的限制

public class Test1 {
public static void main(String[] args) {
IA2 a2 = new A2Impl();
a2.pp();
}
}
interface IA2 {
default void pp() {
System.out.println("this is No2 pp....");
}
}
interface IA3 {
default void pp(){
System.out.println("this is No3 pp");
}
}
class A2Impl implements IA2, IA3 {//如果IA2中有一个default实现的方法和IA3中
的方法一致,则必须在实现类中重新定义
public void pp() {
IA2.super.pp();//调用IA2接口中的pp方法的默认实现
IA3.super.pp();
}
}

接口中没有属性,只能定义常量,它提供一些常量,实现它的类可以共享这些常量

接口可以给出访问控制符,用public修饰的是公共接口,到处可见;如果定义接口没有范围限定 词,则只能在同包中访问

接口中只能定义常量和抽象方法

  • 接口中只能定义公共的常量,接口中的属性默认是public static final类型的,必须是public static final类型的
interface IA{
String name="yanjun";//这里实际上是常量定义,不是属性,它的限定词是public
static final String name="yanjun",必须在声明的同时进行赋值
} 在接口中不能定义静态块 static{}
接口中不能定义构造器
  • 接口中只能定义公共的抽象方法, 只有在JDK1.8+中可以使用default关键字定义方法实现。接口中 的方法默认是public abstract类型的,而且必须是public abstract类型的。只有在JDK1.8+中可以 使用default关键字定义方法默认实现,同时允许在实现类中覆盖重新定义
  • 接口不能被实例化,只能通过实现类所实现,但是可以用于声明变量的类型。

接口 变量名=new 实现接口类();

  •  接口没有构造函数
  • 接口中的抽象方法必须在非抽象子类中提供实现,这个实现可以是继承来的
interface IA2 {
public void pp();
}
class A2 {
public void pp() {
}
}
class B2 extends A2 implements IA2 { //这里的pp方法的实现是从父类中继承来的
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值