自学java(6)继承类,超类和子类

来源:互联网 发布:网络创业优势 编辑:程序博客网 时间:2024/05/17 21:43

继承:基于已存在的类构造一个新类,继承已存在的类就是复用(继承)这些类的方法和域。在此基础上,还可以添加一些新的方法和域,以满足新的需求,这是java程序设计中的一项核心技术。(is-a)


class Manager extends Employee

{

添加方法和域

}

关键字extends表示继承,在java中的所有继承都是公有继承。


已存在的类称为超类,基类,或父类

新类成为:子类,派生类或孩子类。


在子类中要调用父类中的方法:

super.function();这样的话就算有重名也没有关系。


在java中你不需要将方法声明为virtual,因为java中的动态绑定是默认的处理方式。如果不希望让一个方法具有虚拟特征,可以将它标记为final。

java不支持多继承。


多态:一个对象变量可以指示多种实际类型的现象被称为多态。

动态绑定:在运行时能够自动选择调用哪个方法的现象称为动态绑定。         

调用对象方法的执行过程:

(1)编译器查看对象的声明类型和方法名。

(2)编译器将查看调用方法时提供的参数类型。

(3)如果是private,static,final方法或者构造器,那么编译器将可以准确地知道应该调用哪个方法,我们将这种调用方式成为静态绑定。

(4)当程序运行,并且采用动态绑定调用方法时,虚拟机一定调用与x所引用对象的实际类型最合适的那个类的方法。


在覆盖一个方法的时候,子类方法不能低于超类方法的可见性,如果超类方法是public那么子类方法一定要声明为public。


阻止继承:

如果人们希望阻止某个类设计子类,那么就可以在定义它的时候使用final修饰符表示这个类是final类。

final class Excutive extends Manager

{

...

}


强制类型转换:

将一个类型强制转换成另一个类型的过程称为类型转换。

double x = 3.14;

int nx = (int)x;

Manager boss = (Manager)staff[0];

强制转换的唯一原因是:在暂时忽略对象的实际类型之后,使用对象的全部功能。


java的抽象类:(其实我感觉和C++的抽象类没什么差别)

抽象方法充当着占位的角色,它们的具体实现在子类中。

public abstract String function();

包含一个或多个抽象方法的类就叫抽象类。


人们希望超类中的某些方法容许被子类访问,或者容许子类的某个方法访问超类的某个域,这样就将其声明为protected。

(java的受保护部分对于子类及同一个 包中的所有其他类都可见,所以安全性比C++要差一些。)


privata:仅对本类可见。

public:对所有类可见

protected:对本包和所有子类可见。

默认的:对本包可见。













0 0
原创粉丝点击