java-类的多态和多重继承

类的多态
多态意为一个名字可具有多种语义,在程序语言中,多态性是指"一种定义,多种实现",类的多态性可以从两个方面体现,一是方法的重载,二是类的上下转型。
1 方法的重载
概念:
就是在同一个类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同或顺序不同即可,

2 对象向上转型
//四边形
class Quadrangle
{
public static void draw()
{
//dosomething
}
}

public class Parallelogram extends Quadrangle {
public static void main(String args[])
{
Parallelogram p = new Parallelogram(); //实例化平行四边形
draw(p);//调用父类方法
}
}

可以看到,定义方法是形参是 四边形类型,调用的地方传入参数类型为平行四边形类型,平行四边形其实也是种四边形
所以可以把平行四边形对象看作是一个四边形对象,就是把子类对象赋值给父类类型的变量,这种技术叫做“向上转型”

3 对象向下转型
将抽象类型转换为较具体的类型,这样的转型通常会出现问题,例如 不能说四边形是平行四边形的一种,所有的鸟都是鸽子。
Quadrangle q = new Parallelogram (); //四边形
//将父类对象赋予子类对象
Parallelogram p = q;

此时会发生异常,会发生编译器错误,

解决办法
需要告知编译器这个四边形就是平行四边形,将父类对象强制转换为某个子类对象,这种方式称为显示类型转换。
Quadrangle q = new Parallelogram (); //四边形
//将父类对象赋予子类对象,并强制转换为子类型
Parallelogram p = (Parallelogram )q;

4 instanceof 关键字
向下转型前,先使用该关键字判断父类对象是否为子类对象的实例,防止发生ClassCastException 异常
语法格式如下:
myobject instanceof ExampleClass
myobject: 某类的对象引用
ExampleClass: 某个类

如果返回true,说明myobject 对象为ExampleClass 的实例对象,反之则不是
Quadrangle q = new Quadrangle (); //四边形
//判断父类对象是否为Parallelogram 子类的一个实例,
if(q instanceof Parallelogram )
{
Parallelogram p = (Parallelogram) q; // 进行向下转型操作
}

 

多重继承

类不允许多重继承,但接口允许多重继承,一个类可以同时继承多个接口
class implements interface1,interface2

注意:
使用多重继承时,可能出现变量或方法名冲突的情况,解决该问题时,如果变量冲突,则需要指定变量的接口,
即通过“接口名.变量”实现,而如果出现方法冲突时,则只需要实现一个方法即可。


接口继承接口
interface1 extends interface2

class TestA implements interface1
则TestA必须同时实现 interface1,interface2 2个接口中的方法

 

转载于:https://www.cnblogs.com/hup666/p/10416107.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值