【Java】接口

接口(语法)

接口出现的目的:

  • 体现封装性
  • 分离/契约和实现
  • 区分开甲方(提要求)和乙方(干活)

接口可以认为是一份合同(契约)
语法定义:

interface 接口名称 
{
    void volumnUp();//抽象方法
}
//实现继承 
interface Collection{}
interface DataStructure {}
interface List extends Collection,DataStructure{}

1.接口的定义允许多继承
2.接口无法实现实例化对象
3.接口中给出的方法列表默认

  • public 访问限定符修饰的
  • 无法使用static 修饰
  • 是一个抽象方法,直接用分号结尾,不写方法体

4.接口中不能出现属性,除非是被final static修饰

final 关键字(修饰三个位置)
1.修饰变量,不可变变量只有一次赋值 的机会

final int a=10;
a=100;//触发编译错误

final int[]a=new int [10]
A)a=new int [100]  //错误
B)a[0]=100    //正确

final Person p=new Person();
A) p=null;     //触发编译错误
B) p.name="hello";//正确

2.final 可以修饰类:表示这个类不能被继承

final class A{}

3.final 可以修饰方法:代表这个方法无法被其子类覆写

class A
{
    final void menthod();
}

abstract 关键字
1.修饰类,这个类无法被实例化

abstract  class A{}   抽象类
new  A (); 编译错误

2.修饰方法,该方法称为抽象方法,只有方法签名,没有方法实现

abstract void  menthod();

注解:

  1. 有抽象方法一定有抽象类,而有抽象类并不一定有抽象方法
  2. 抽象方法一旦被实现了一次就不再是抽象方法

多态

1.父类型的引用可以指向子类型的对象(向上转型)

  • 只有非抽象的类类型能被实例化
  • 以返回值的类型体现
List getList()
{
    return new ArrayList();
}
  • 以参数体现
void list(List list)
{
    ....
}
list (new ArrayList());

2.在编译期间,可以调用的方法列表,根据引用的类型来决定,而不是根据对象的类型

3.运行期间,真正执行的普通方法,以实际执行的对象类型为准

4.运行期间,真正执行的静态方法,以引用类型为准

5.向下类型的转换:如果ab实际上不是指向B类型的对象不会有编译错误但会触发运行时错误(会抛出异常ClassCastException)

6.为了避免类型转化错误,java提供了一个运算符 instanceof 判断引用背后的真实对象类型(发生在运行期)

ab instanceof B;//ab引用指向的对象能否被B类型的引用指向
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值