读书笔记:《Java2教程》(五)

文章作者 100test 发表时间 2007:03:14 16:57:20
来源 100Test.Com百考试题网


继承和多态

Java做为面向对象设计语言的代表,继承和多态这两种典型的特性尤为突出。今天我们就介绍一下这方面的内容。

首先,明确概念:

继承:对于他人提供的已有程序或者经验证排错后的程序的重用。这么说好像有点别扭,那么,换个简单的说法,就是“吃现成的”,当然,“吃”之前可能还要做一些必要的“加工”。

多态:以单一的方法实现不同的行为。这又显得有点抽象了。还得举个例子。比方说,我们说猫会叫,狗也会叫,可描执行这个叫的动作的结果是 miao ,狗呢,是wangwang~。那么对于叫这个动作产生不同结果的情况,我们就称之为多态。在OOP中,多态一般是用于实现由同一基类派生出来的子对象对基类共有行为的个性化。

接着,具体的说明。

关于继承我们需要了解和掌握的是:

1 表示方法:继承用extends关键字来指出。格式:class subclass extends superclass.

2 Java语言规定,Java中的类只能显式的继承一个(且不能超过一个)其它的超类。即Java不支持多重继承。

3 为了解决不支持多重继承的问题,Java引入了interface的概念,从而在保持简洁性的前提下,同时获得了多重继承特性的优势。

4 超类和子类之间可以做单向的“类转换”(cast),就像数据类型中强制类型转换那样。但是,只有从子类向基类(超类)的转换是安全的。从基类到子类的转换需要格外小心。

5 子类不能直接访问基类中的私有成员。

关于继承后的构造函数。需要记住一点:子类一定会通过不同的方式调用基类的构造函数。

子类继承超类后,子类可以有自己的构造函数。在子类的构造函数内,调用超类的构造函数的方式有两种:

1 显式的调用。格式 super)。以这种方式来调用基类的构造函数时,有明确的规定,即该语句必须时子类构造函数的第一条语句;

2 隐式的调用。其实就是不写super)这句。在这种情况下,Java会为你的子类自动的调用基类的那个没有任何参数的构造函数。

还是用代码来说明:

/*

* Created on 2005-6-3

*

* TODO To change the template for this generated file go to

* Window - Preferences - Java - Code Style - Code Templates

*/

/**

* @author CN1LC1E0

*

* TODO To change the template for this generated type comment go to

* Window - Preferences - Java - Code Style - Code Templates

*/

public class Demo

{

public static void main(String[] args)

{

TestSubClass demo1 = new TestSubClass().

TestSubClass Demo2 = new TestSubClass("Try again.").

}

}

class TestSuperClass

{

TestSuperClass()

{

System.out.println("TestSuperClass defalut constructor called.").

}

TestSuperClass(String str)

{

System.out.println("TestSuperClass another constructor called. " str).

}

}

class TestSubClass extends TestSuperClass

{

TestSubClass()

{

System.out.println("TestSubClass constructor 1, call superclasss constructor implicitly.").

}

TestSubClass(String str)

{

super(str).

System.out.println("TestSubClass constructor 2, call superclasss constructor explicitly.").

}

}

代码很简单,我想不用过多的解释了。程序运行的结果如下:

TestSuperClass defalut constructor called.

TestSubClass constructor 1, call superclasss constructor implicitly.

TestSuperClass another constructor called. Try again.

TestSubClass constructor 2, call superclasss constructor explicitly.

通过以上的例子,您应该可以掌握构造函数的调用顺序了。



相关文章


课程介绍(11)SL-351Java数据库应用程序编程
课程介绍(13)SL-291JavaBeans组件开发
读书笔记:《Java2教程》(五)
读书笔记:《Java2教程》(一)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛