Java基础_day10

一 接口

1.1 接口的定义:

接口代表了某种能力,类似于生活中的合同。而在接口中定于的各个方法,表示这个能力的具体要求,类似于合同中的条款
定义接口需要使用到关键字interface
​
接口中可以定义:
属性
接口中的属性,默认都是静态常量,访问权限都是public。
方法
接口中的方法,默认都是抽象方法,访问权限都是public。
​
public interface MyInterface {
public static final String INTERFACE_FIELD = "value"; // 接口中的
属性定义
public abstract void method(); // 接口中的
方法定义
}
​
注意:
一般接口中不写成员变量,只写方法,相当于制定规则,所以又将接口称为方法列表
​

1.2 接口的作用

让java从单继承间接实现了多继承,扩充了原来的功能,我们可以认为接口是类的补充

1.3 接口和抽象类的异同

相同点:
1:都可以编译成字节码文件
2:都不能创建对象
3:都可以申明引用
4:都具备Object类中所定义的方法
5:都可以写抽象类方法
​
不同点:
1:接口中左右的属性,都是公开静态常量,缺省使用public static final 修饰
2:接口中所有的方法,都是公开抽象方法,缺省使用public abstract 修饰
3:接口中没有构造方法,构造代码段,静态代码段。

1.4 接口的实现

接口,需要需要让类实现,表示这个类具有了这个接口的定义的能力,因为接口中有很多抽象方法,因此类在实现接口的时候,如果不是抽象类,必须要重写实现与接口中所有的抽象方法
​
public interface MyInterface {
    public static final String INTERFACE_FIELD = "value"; // 接口中的
属性定义
    public abstract void method(); // 接口中的
方法定义
}
// 非抽象类实现接口,必须重写实现接口中所有的抽象方法
class MyInterfaceImpl implements MyInterface {
    @Override
    public void method() {}
}
// 抽象类实现接口,接口中的抽象方法,可以实现,也可以不实现
abstract class MyInterfaceAbstractImpl implements MyInterface {}
​

1.5 接口的继承

接口之间也是存在继承关系的与类的继承相似,子接口可以继承到父接口中多有成员的.
与类的继承不同,接口之间的继承是多继承,也就是说,一个接口是可以有多个父接口的。子接口可以继承到所有继承到所有父接口中的成员
interface SuperInterface1 {
    void method1();
}
interface SupeInterface2 {
    void method2();
}
// 此时,在这个接口中,继承到了所有的父接口中的方法,同时定义了自己独有的方法
// 实现类在实现这个接口的时候,需要实现 method1、method2、method3 三个方法
interface SubInterface extends SuperInterface1,     SuperInterface2 {
        void method3();
}
​
注意:一个类实现多个接口的时候,多个接口不能存在有冲突的方法,接口在继承父接口的时候,也不允许同时继承有方法冲突的接口。

1.6 接口的多态

接口的引用,可以指向实现类的对象。与类的多态相似,同样存在向上转型和向下转型
​
向上转型:实现类类型转型为接口类型
    .是一个隐式转换,不需要任何的修饰。
    .向上转型后的接口引用,只能访问接口中的成员
向下转型:接口类型转型为实现类类类型
    .是一个显示转换,需要强制类型转换。
    .向下类型转型的实现类引用,将可以访问实现类中的成员
    
interface CanWalk {
    void walk();
}
abstract class Animal {
    public abstract void eat();
}   
class Dog extends Animal implements CanWalk {
    @Override
    public void eat() {}
    @Override
    public void walk() {}
}
class Test {
    public static void main(String[] args) {
// 1. 实例化一个Dog对象
    Dog dog = new Dog(); // 将狗看成狗看待
// 2. 将Dog对象转型为Animal类型
    Animal animal = dog; // 将狗看成动物看待
// 3. 将Dog对象转型为CanWalk类型
    CanWalk walk = dog; // 将狗看成会走的东西看待
    }
}
​

1.7 接口的新特性

static方法:可以在接口中定义静态方法,静态方法不是抽象方法,是有实现部分的。同时,这个静态方法,只能由当前的接口名字调用,接口的引用和实现类都是不能使用的。
​
default方法:修饰接口中的方法,default修饰的方法可以添加默认的实现部分。此时,
实现类在实现接口的时候,对于这些方法可以重写,也可以不重写。

二 内部类

1.1 内部类的分类

1.成员内部类
2.静态内部类
3.局部内部类
4.匿名内部类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值