关于Java中的继承和多态

面向对象编程(oop)都有三大基本特征:封装,继承,多态。

封装是为了保证代码的隐蔽性,比如private的权限是私有的,只有在类的内部才能看到其构成。而继承和多态则起到不同的作用。

继承:

继承是为了提高代码的复用性。一般我们这么用extens来定义:子类 extens 父类。

继承:当类和类之间是is-a关系的时候,两者之间就存在继承关系。

子类继承父类中的所有属性和方法,有显示继承和隐继承,其中private权限的成员属性和成员方法,但是不能直接使用其方法和访问其成员属性。因为父类的属性是私有的,需要通过特定的方法进行使用和访问,这就是隐继承。而显示继承是父类的属性和方法可以随意使用,没有限制。

我们使用super关键字来访问父类的属性和方法,super关键字代表了父类对象的引用。

如果要产生子类的对象,我们默认先要产生父类,比如我们new一个子类对象,调用了子类的构造方法,那我们必须先调用父类的构造方法,先要产生父类,才能产生子类。如果父类不存在无参构造,则子类构造方法首行必须使用super(有参)这种形式来定义一个构造方法。

多态:

让一种引用产生不同的行为/特性。我们把这种称为多态性。

多态有两种表现形式,向上转型和向下转型。

向上转型:一般发生在有继承关系的类之间,不一定是直接子类,也可以是间接子类。

我们一般这么定义:父类名称 父类引用=new 子类实例。

向上转型的意义在于可以让参数统一化,降低操作者的使用难度。

既然存在继承关系,那子类就继承父类的方法,那如果子类也有跟父类相同方法名,参数列表和返回值相同的方法,这时候我们就需要进行方法重写。

什么是方法重写,方法重写发生在继承中,子类和父类存在相同的方法,这个相同表示,除了权限不相同,方法名,返回值,参数列表完全相同的一组方法。

我们使用向上转型的时候,我们调用子类实例的方法,如果子类进行了方法重写,那么这时候我们会调用的是子类的方法,而不是调用继承的父类方法。但是如果子类中没有跟父类一样的方法,那我们调用这个方法时,则调用的是父类的方法。

但是我们的向上转型也有一个缺点,那就是子类拥有一个父类没有的方法,这时候我们进行向上转型之后,实例化的对象不可以调用其子类独有的方法。这时候如果你想调用这个子类独有的方法,你需要进行向下转型。

我们一般这么定义向下转型:子类引用=(子类名称)父类引用。

这时候我们需要对父类引用进行强制转换,我们之前了解过Java基本类型转换,这也类似,小类型变成大类型自动提升,大类型转化成小类型就需要强转。

这样子我们就通过向下转型调用其子类独有的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值