面向对象编程的四大特征之一(继承)

继承

(1).概念:在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(Inheritance)。已有的类被称为父类,而新类称为子类。父类也可以称为基类、超类,子类也可以称为派生类。

在java中,一个类使用关键字extends继承其它类。关键字extends出现在类声明时的类名后,extends后面跟着的是要继承的类的名称。

父类(Employee)【salary可分为拿不同薪资的员工】:

public class Employee{
    public String name;//员工姓名
    public String address;//员工地址
    public int number;//员工工号
    public float salary;//年薪
}

子类(Salary):

/*
Salary类,代表拿固定年薪的员工类型
*/
public class Salary extends Employee{}

子类(Hourly):

/*
Hourly类代表按小时付酬的员工类型
*/
public class Hourly extends Employee{}

优点:使用继承不仅可以重用已有的代码,从而避免代码重复,还可以创建一个更容易维护和修改代码的程序。
(2).使用"is a"关系判断继承:"is a"关系是一个简单而强大的规则,用于判断父类和子类的继承关系是否正确。如果对象有一个(has a)属性,这个属性就必须是类中的一个成员变量。

eg:如果能够说子类"is a(是一个)"父类,这个语句为真,那么继承关系就是对的。

(3).单继承与多继承(继承有单根性,传递性):子类只能有一个父类,单子类也可以成为父类。

(4).所有类的基类(Object)【基类、超类】:Object类在java.lang包中,是每个java类的父类,要么是直接的父类,要么是间接的父类。

eg:

Object()

默认构造方法

clone()

创建并返回此对象的一个副本。

equals(Object obj)

指示某个其他对象是否与此对象“相等”。

finalize()

当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

getClass()

返回一个对象的运行时类。

hashCode()

返回该对象的哈希码值。

notify()

唤醒在此对象监视器上等待的单个线程。

notifyAll()

唤醒在此对象监视器上等待的所有线程。

toString()

返回该对象的字符串表示。

wait()

导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。

wait(long timeout)

导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量。

wait(long timeout, int nanos)

导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。

(5).方法重写:子类可以重写从父类继承的方法,从而允许子类添加或者改变父类中方法的行为。

遵循的规则:子类的方法返回值的类型、方法名和形式参数列表,必须和父类中的是相同的。

                 访问修饰符必须不小于父类中的访问修饰符。

                 子类中重写的异常不能抛出比父类多的异常。

(6).super,final关键字

子类想要给继承的方法添加行为,但并不是完全替换父类的方法。这时,可使用关键字super来调用父类中重写的方法。

final关键字的两种用法:final类。一个类可以声明为最终类的,最终类不能被有子类。

                               final方法。一个方法可以声明为最终的,最终方法不能被重写。

posted on 2015-04-12 17:28  陌生人的问候  阅读(540)  评论(1编辑  收藏  举报