面向对象的三大特征:继承,多态,封装
类的继承:
Java的继承通过extends来实现,实现继承的类称为子类(派生类),被继承的类称为父类(基类或超类)。例如:狗是动物的一种,也可以说够继承了动物的特性,或者说狗是动物的子类。
Java类只能有一个直接父类,可以有多个间接父类。如果定义一个Java类时未显示制定这个类的直接父类,则这个类默认扩展java.lang.Object类。Java.lang.Object是所有类的父类,所有Java对象都可以调用java.lang.Object类所定义的实例方法。从子类角度看,子类扩展了父类,但是从父类角度看,是父类派生出了子类
子类总是以父类为基础,额外增加新的属性和方法。子类包含域父类同名方法的现象呗称为方法重写,也称为方法覆盖。既子类重写了父类的方法,也可以说是子类覆盖了父类的方法。
方法的重写要遵循“三同一小一大”的规则。“三同”指的是方法名相同,形参列表小童,返回值类型相同;“一小”值的是子类方法声明抛出的异常类应该必父类方法声明抛出的异常类更小或相同;“一大”指的是子类方法的访问权限应该必父类方法更大或相同。其中覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法
封装
封装是一种把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制.封装可被理解为一种用做保护的包装器,以防止代码和数据被包装器外部所定义的其他代码任意访问.对包装器内部代码与数据的访问通过一个明确定义的接口来控制.封装代码的好处是每个人都知道怎样访问代码,进而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用.
在JAVA中,最基本的封装单元是类,一个类定义着将由一组对象所共享的行为(数据和代码).一个类的每个对象均包含它所定义的结构与行为,这些对象就好象是一个模子铸造出来的.所以对象也叫做类的实例.
在定义一个类时,需要指定构成该类的代码与数据.特别是,类所定义的对象叫做成员变量或实例变量.操作数据的代码叫做成员方法.方法定义怎样使用成员变量,这意味着类的行为和接口要由操作实例数据的方法来定义.
由于类的用途是封装复杂性,所以类的内部有隐藏实现复杂性的机制.所以JAVA中提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西.私有的方法数据只能通过该类的成员代码来访问.这就可以确保不会发生不希望的事情.
继承与封装可以互相作用.如果一个给定的类封装了某些属性,它的任何子类将会含有同样得属性,另加各个子类所有得属性.这是面向对象程序在复杂性上呈线性而非几何增长的一个重要概念.新的子类继承其所有祖先的所有属性.子类和系统中的其他代码不会产生无法预料的交互作用.
多态
多态是指一个方法只能有一个名称,但可以有许多形态,也就是程序中可以定义多个同名的方法,用"一个接口,多个方法"来描述.可以通过方法的参数和类型引用.