Java基础:封装 继承 多态

面向对象的三个基本特征是:封装、继承、多态。

我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是:代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。

封装:

 封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。 

 封装的意义:
  封装的意义在于保护或者防止代码(数据)被我们无意中破坏。在面向对象程序设计中数据被看作是一个中心的元素并且和使用它的函数结合的很密切,从而保护它不被其它的函数意外的修改。

  1. 保护数据成员,不让类以外的程序直接访问或修改,只能通过提供的公共的接口访问==>数据封装。
  2. 方法的细节对用户是隐藏的,只要接口不变,内容的修改不会影响到外部的调用者==>方法封装。 
  3. 当对象含有完整的属性和与之对应的方法时称为封装。
  4. 从对象外面不能直接访问对象的属性,只能通过和该属性对应的方法访问。
  5. 对象的方法可以接收对象外面的消息。

类成员的访问修饰符:

即类的方法和成员变量的访问控制符,一个类作为整体对象不可见,并不代表他的所有域和方法也对程序其他部分不可见,需要有他们的访问修饰符判断。

权限 类内 同包 不同包子类 不同包非子类
private × × ×
default × ×
protected ×
public

继承:

继承主要实现重用代码,节省开发时间。

继承可以解决代码复用问题,让我们编程更加靠近人类的思维,当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类(比如刚才的Student),在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extend语句来声明继承 父类:

class 子类 extends 父类

扫描二维码关注公众号,回复: 12592935 查看本文章

这样,子类就会自动拥有父类定义的属性和方法。

继承注意事项:

  • 子类最多继承一个父类
  • java多有类都是Object类的子类

方法重载:

简单地说:方法重载就是类的同一种功能的多种实现方式,到底采用哪种方式,取决于调用者给出的参数。

方法重载-注意事项

  • 方法名相同
  • 方法的参数类型、个数、顺序至少有一项不同
  • 仅仅是返回类型不一样,是不能构成重载的
  • 方法修饰符可以不同
  • 如果只是控制访问符不同,不能构成重载

方法覆盖:

将父类的方法进行重新写。方法的覆盖就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样,那么我们就说子类的这个方法覆盖了父类的那个方法,比如上个案例的Cat类中的cry方法就覆盖了Animal类的cry方法。

方法覆盖的注意事项:

  • 子类的方法的返回类型,参数,方法名称,要和父类方法的返回类型,参数,方法名称完全一样,否则编译出错。
  • 子类方法不能缩小父类方法的访问权限。假设父类方法时public,但是你的子类方法改成了protected,这样就会出现报错

多态:

1、“一个接口,多种方法”

所谓多态,就是指一个引用(类型)在不同情况下的多种状态,你也可以这样理解:多态是指通过指向父类的指针,来调用在不同子类中实现的方法。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。

  多态的三个条件:

  • 继承的存在(继承是多态的基础,没有继承就没有多态).
  • 子类重写父类的方法(多态下调用子类重写的方法).
  • 父类引用变量指向子类对象(子类到父类的类型转换).

重载(overload)和重写(override)是实现多态的两种主要方式。

2、实现多态:

  • 接口多态性。
  • 继承多态性。
  • 通过抽象类实现的多态性。
     

猜你喜欢

转载自blog.csdn.net/PrisonJoker/article/details/105282526
今日推荐