封装,继承,多态
(1)封装:就是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治‘封装的对象,这些对象通过一个受保护的接口访问其他对象。例如,类中的某个属性,我们定义成私有类型,然后用getter和setter进行访问即可。
(2)继承:是一种层次模型,并且允许和鼓励类的重用,他提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程叫做继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从他的基类哪里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
继承的限制:
a.不允许多重继承,一个子类只能继承一个父类,不能继承多个父类。
b.允许多层继承,例如:a extends b; b extends c;
c.继承中子类不允许访问父类的私有操作,而只能继承全部的公共操作。
d.在实例化子类的过程中,会先去执行父类的构造函数,在执行本省的构造函数,实际上对子类构造方法而言隐藏了一个super()语句。例如:public student(){
super();//隐藏了,为调用父类的无参构造
System.out.println("子类继承父类,先访问父类的无餐构造函数");
}
或者为super(name,age);//实现明确的调用父类中的两个参数的构造函数
(3)多态:是指允许不同的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
方法的覆盖和重载就属于多态,重载很简单了。就是方法名相同,而参数类型或参数个数不同;下面介绍方法的覆盖中的一些需要记住的部分。
(1)在方法覆写的时候一定要注意访问权限问题,被覆写的方法不能有比子类更严格的访问权限,一般是public.
(2)在使用子类实例化对象调用父类中被覆写过的方法是调用的永远是被覆写过的操作(子类中的方法)。
(3)若父类方法为static和final修饰,由于不能被继承,所以在编译时就可以确定他们的值,属于前期绑定,在子类中访问的时候是直接访问的父类中的方法。父类中的private声明方法,和成员变量不能被子类继承,所以的private方法都被隐式的指定为final。
(4)若想调用父类中的被子类覆盖过的方法,只能在子类方法中写上super.XX();才能调用父类的方法。
(5)使用this(name,age)在子类的带参构造函数中,明确调用了父类中的两个参数的构造方法。
(6)父类中的private和static方法是不可以被子类覆盖的,调用的时候为方法本身。(private不能被访问)