`
Eros_李
  • 浏览: 6669 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

面向对象的特性【封装、继承、多态】

    博客分类:
  • Java
阅读更多

打算记录一下自己学习Java的过程,顺便理顺一下自己的知识与体系,会逐渐完善的。

 

本文介绍的是面向对象的特性:封装、继承和多态。

 

 

【封装】

先来说一下封装:封装性是面向对象编程的核心思想,其实就是将描述某种实体的数据和基于这些数据的操作集合到一起,形成一个封装体。封装性是通过访问修饰符来限定应用程序内文件的访问级别的。Java语言中的访问控制级别有4种,分别是public、protected、default和private。

 

public意为共有的、公共的,访问级别最高,使用此修饰符的成员被访问时不受任何限制。    protected意为受保护的,使用此修饰符的成员只能由派生类或统一程序包中的类进行访问。    default意为默认的,使用此修饰符的成员只能由统一程序包中的类进行访问。    private意为私有的,访问级别最低,使用此修饰符的成员只允许自身所在的类进行访问。    使用过程中应该注意:

  • 不能使用protected和private去修饰类
  • 要尽量遵循“尽可能保持数据的私有性”原则

对属性的封装

 

 以Car类为例,相对于brand(品牌)这个变量而言,seats(座位数)少了setSeats()方法,这就表示seats这个变量只能在Car类中进行修改。

 

类中方法的封装

上面实现了对方法SmallCar()的封装,在方法的调用过程中,先将所需调用方法所在的类SmallCar进行实例化,再通过类的实例化进行方法的调用,如下图,这样在多次使用print()输出语句的时候就可以进行代码的复用,节省时间。

 

 

 

继承

继承也称为泛化,表现的是一种共性与特性的关系。Java中只支持单继承,一个类可以继承另一个类,并在此基础上添加自己的特有功能,被继承的类叫父类(parent class)或超类(super class),继承父类的类叫子类(subclass)或派生类(derived class)。如果一个类没有指明任何父类,则缺省的自动继承java.lang.Object类(Object类是所有类的顶级父类,在Java中所有类都是直接或间接的继承了Object类)。

 

 继承是通过关键字extends来实现的,如下图

 

 

 

 

【多态】

 1.方法重写(override)。主要应用于父类与子类之间,如果父类无法满足子类的要求,则可以在子类中对父类的方法进行改造。方法重写需要遵循几点:

  • 方法签名(方法名和参数列表)必须完全相同
  • 子类方法的返回值类型(或声明异常)可以与父类的相同或是其子类
  • 父类中的私有方法不能被重写
  • 子类方法的可访问性可以与父类的相同或是更公开。例如父类方法的可访问性为protected,则子类方法可以为public或protected。
  • 静态方法不存在重写的概念。

 如下例,子类SmallCar重写了Car中的start()方法,在main方法中,构造了SmallCar的实例并调用了start()方法。

 

运行结果如下,由于重写了父类Car的start()方法,所以在调用SmallCar实例start()方法时使用的是其重写后的方法。

 

 如下图,A()方法接收了car类型的参数,main()方法中分别向A()方法传入了Car、SmallCar类的对象

 

执行结果如下:可看出构造SmallCar实例的start()方法时使用的是重写后的方法,构造Car实例的start()方法时使用的是重写前的方法。

 

 

 2.方法重载。通常是指同一个类中,相同的方法名对应不同的方法实现,即方法所需要的参数不同。方法重载是同一个类中多态性的一种表现。进行方法重载时,有三条原则要遵守:

  • 方法名相同
  • 参数列表(个数、类型、顺序)不同
  • 返回值不作为方法签名

如图,在Car类中,定义的两个start()方法的参数不同,所以进行重载。

 

结果如下,相同方法名对应不同的结果,也就是相同方法名对应不同的方法实现。

 

 

在使用面对对象的方式解决问题时,一定不要忘记其特性,运用其特性提高效率及安全性。

 

 

 

 

 

 

 

  • 大小: 10.8 KB
  • 大小: 4 KB
  • 大小: 4 KB
  • 大小: 5.9 KB
  • 大小: 18.6 KB
  • 大小: 19.3 KB
  • 大小: 9.6 KB
  • 大小: 15.4 KB
  • 大小: 6.9 KB
  • 大小: 11.4 KB
  • 大小: 12.4 KB
  • 大小: 8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics