面向对象之封装、继承和多态

面向对象

Java是一门面向对象的语言,核心思想就是“万物皆对象”,而面向对象的核心组成部分是类与对象的关系。

我们可以把相同属性的客观事物想象成一个抽象的类,将相同的属性和方法捆绑到一起封装在这个抽象类中。把相同或相似的对象归为一类的过程称为抽象。这个抽象类相当于一个模板,通过这个模板使用new关键字的形式实例化具体对象。比如我们可以把汽车这个类型想象成一个对象,将汽车共有的相同的属性和行为归纳成一个抽象的汽车类,通过这个抽象类作为模板产生各种不同的具体对象---奔驰,宝马,奥迪。


面向对象的三大特性,封装,继承和多态

可以理解成把一组数据结构和处理他们的方法组成对象,把相同行为的对象归纳成类,通过类的封装隐藏内部细节,通过继承实现类的延续性扩展性,通过多态实现基于对象类型的动态分派

三大特性之—封装

封装可以从字面上来理解就是包装的意思,用来隐藏信息。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。也就是说用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象或属性。封装就好像是微波炉加热包子,你想加热包子你只需要将包子放进微波炉里按下加热按钮,稍等几分钟就好,但是你并不知道微波炉具体如何加热包子,所以可以看成微波炉封装了加热包子的方法。

如何实现封装?

可用通过使用private关键字修饰属性或方法来实现属性或方法的封装,以达到外部无法直接访问的目的。被封装的内容如果需要访问,则需要编写一个公开的Setter,Getter方法。

public class Person{
    private String name ;
    public void setName(String name){
        this.name = name ;
    }
    public String getName(){
    return name ;
    }
}

三大特性之—继承

继承是可以让一个类获得另一个类属性的方法,可以直接使用现有类的所有功能并对这些功能进行扩展。子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。在继承关系中,父类更通用,子类更具体。父类具有更一般的特征和行为,而子类除了具有父类的特征和行为,还具有一些自己的特征和行为。

为什么需要继承?

使用继承可以有效实现代码复用,避免重复代码的出现。当俩个类具有更相同的属性和方法时,可以将相同的部分抽取出来放到一个类中作为父类。

如何实现继承?

在Java语言中,用extends关键字表示一个类继承了另一个类。子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法,子类中可以重新定义父类的属性,重写父类的方法获得与父类不同的功能

继承的限制

单继承:一个孩子自能有一个亲爸,Java中不能多重继承,但允许多层继承。
class A{}
class B extends A{}
class C extends B{}

方法重写

子类定义了与父类相同方法名的方法
子类中覆写的方法不能拥有比父类更加严格的访问权限

三大特性之—多态

多态的特征时表现出多种形态,具有多种实现方式。
使用多态可以增强程序的可扩展性,不但能够减少编码的工作量,也能大大提高程序的可维护性及可扩展性。多态中可以分为静态多态和动态多态。静态多态指方法的重载,与继承没有必然关系。动态多态指运行时多态,即向上向下转型,必须在继承关系中实现。

如何实现多态?

Java中对象的多态性主要分为俩种类型,向上转型及向下转型
    向上转型:父类引用指向子类实例;例:动物类 animal = new 猫类();
    向下转型:强制将向上转型中的父类引用指向转型成子类类型(要想向下转型必须先要向上转型);例:猫类 cat = (cat)animal ;
注:多态中至始至终都是子类对象在做着变化;
    1.多态中(父类引用指向子类对象)成员方法的特点:
        编译时期:参阅引用型变量所属类中是否有调用方法,如果有编译通过,如果没有编译失败。
        运行时期:参阅对象所属类中是否有调用方法
        简单总结为:多态时,编译看左边,运行看右边。
    2.多态中成员变量的特点:
        无论在编译还是运行时,都参考左边(引用变量所属类)
    3.多态中静态成员方法的特点:
        无论编译还是运行都参考左边(引用变量所属类)

Animal animal = new Cat();//向上转型
Cat cat = (cat) animal ;//向下转型







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值