您的位置:首页 > 职场人生

黑马程序员--第一阶段3.面向对象--第8天

2012-04-25 10:25 351 查看
--------------------
android培训、java培训、期待与您交流!--------------------

类的继承

继承格式:class 子类名 extends父类名

java 只支持单继承,即只能继承一个父类

java 支持多层继承,如B继承A,C继承B,则C也间接的继承了A

子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法。在子类的构造方法中可使用语句super(参数列表)调用父类的构造方法,如:

class A

{

public String aa=”你好”;

public int bb=20;

public A(String aa,int bb)

{

this.aa=aa;

this.bb=bb;

}

}

class B

{

public String cc=”不好”;

public B ( String d,int e,String f )

{

super(d,e);

this.cc=f;

}

} //如果类B中没有定义构造函数,则系统会自动创建一个无参数的空构造函数,并调用父类的无参构造函数,即public类名(){
super( ) }

[align=left]如果子类的构造方法中没有显式地调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则在产生子类的实例对象时,系统默认调用父类无参数的构造方法。 [/align]

[align=left]子类不能继承父类中private类型的成员变量和方法[/align]

[align=left]被final修饰的类不能当父类[/align]

子类对象的实例化过程

1. 分配成员变量的存储空间并进行默认的初始化,就是用new关键字产生对象后,对类中的成员变量按第三章的表3.1中的对应关系对对象中的成员变量进行初始化赋值。

2. 绑定构造方法参数,就是new Person(实际参数列表)中所传递进的参数赋值给构造方法中的形式参数变量。

3. 如有this()调用,则调用相应的重载构造方法(被调用的重载构造方法又从步骤2开始执行这些流程),被调用的重载构造方法的执行流程结束后,回到当前构造方法,当前构造方法直接跳转到步骤6执行

4. 显式或隐式追溯调用父类的构造方法(一直到Object类为止,Object是所有Java类的最顶层父类,在本章后面部分有详细讲解),父类的构造方法又从步骤2开始对父类执行这些流程,父类的构造方法的执行流程结束后,回到当前构造方法,当前构造方法继续往下执行。

5. 进行实例变量的显式初始化操作,也就是执行在定义成员变量时就对其进行赋值的语句,如:

6. 执行当前构造方法的方法体中的程序代码



super(…)和this(…)调用语句不能同时在一个构造函数中出现

super(…)或this(…)调用语句只能作为构造函数中的第一句出现

覆盖父类的方法

方法重写=覆盖

覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型。

如果在子类中想调用父类中的那个被覆盖的方法,我们可以用super.方法的格式。

覆盖方法时,不能使用比父类中被覆盖的方法更严格的访问权限。

final关键字

在Java中声明类、属性和方法时,可使用关键字final来修饰。

final标记的类不能被继承。

final标记的方法不能被子类重写。

final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次,不能再被改变。

方法中定义的内置类只能访问该方法内的final类型的局部变量,用final定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期,将一个形参定义成final也是可以的,这就限定了我们在方法中修改形式参数的值。

public static final共同标记常量时,这个常量就成了全局的常量。

final标记的成员变量只能在两个地方被赋值,其他任何地方都不行,代码如下:

public final int x=6;//在定义时初始化

public 类名( ){x=50;}//在构造函数中初始化,注意如果有多个构造函数则需要在每一个构造函数中都进行初始化,否则会报错。

static 修饰的成员变量只能在定义时初始化,被static修饰的成员变量在其他类中可以直接调用,即“类名.变量名”这种方法调用,如果没有static修饰,则需要创建该类的实例后才能调用。

--------------------
android培训、java培训、期待与您交流!--------------------

[align=center] 详情请查看:http://edu.csdn.net/heima/[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: