java之 接口与多态

先接着上节的话题 继承

    继承名字的遮挡问题:

class  A{
int a;
}
class B extends A{
int a;
public void method(int a){
a//
}
}

 

继承和组合   和语法无关,主要是设计角度

class 遥控器{
  void volumnUp();
  void volumnDown();
  }
class 电视{
 遥控器 x;
 volumnUp(){x.volumnUp();
 }
 }

下面进入正题  接口

出现的目的  :体现封装性

                       分离的契约与实现

                      区分甲方(提要求)和乙方(工作)

接口认为就是一份合同

语法定义   interface  接口名称{

    void volumnUp();  抽象方法

}

//容器

interface  Collection{                     interface   DataStructyre{}

}

intreface list extends Collection,DataStructyre{

}

1.接口的定义允许多继承。

2.接口无法实例化对象。  可以出现,默认都是被

3.接口中给出的方法列表默认。  final static 修饰

1)public访问限定修饰符的

2)无法使用stati修饰(有特列)

3)是一个抽象方法,直接用分号结尾,不用给方法体。

interface JavaCourse{

void 上课();

void 辅导();

void 留作业();

}

语法:类实现接口的语法,写在定义类的时候。

class 陈老师 implements JavaCourse{

@Override

void 上课 (){...... }

........

}

class 汤老师 Implements JavaCourse{

@Override

void 上课(){......}

......

}

class A extends Parent implements IA,IB,IC{

}

1.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 method(){}

}

2.abstract

1.修饰类 这个类无法被实例化 

abstract class A{}  抽象类

new A();//编译错误

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

abstract void method();

 

1.抽象方法一但被实现一次,就不再是抽象方法。

2.AbstractList中只是线性表,把公共代码提出来复用,所以无法实现insert 方法,因为顺序表的方法和链表的不同。

多态(继承和多态都是取自生物学上的术语)

猫和狗都是动物 ,都可以叫,但种类不同,所以叫声也不同。

1.父类的引用可以指向子类的对象

2.引用可以调用的方法有那些,在编译期间,是根据引用类型决定的,不是根据对象的类型决定的。

3.运行期间按,真正执行的是那个方法 ?

                     普通方法

     如果是静态方法?

多态

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

2.编译期间,可以调用方法列表,以引用类型为主。

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

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

总结

多态   

1.向上转型和向下转型

向上转型是自然的,不需要强制转换,向下转型是不自然的,需要强制转换。

2.转换的正确性需要开发者自行保证。

3.通过instanceof保证。

4.如果错误,会有运行时异常抛出。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值