您的位置:首页 > 编程语言 > Java开发

关于继承、类初始化、多态

2016-09-08 11:44 253 查看
首先是类的继承的问题:

子类继承父类,初始化执行顺序为:

1.优先执行父类中的static块,再执行子类中的static块。

2.执行父类中的初始化语句。

3.然后执行父类中的构造函数,父类中的函数。

4.执行子类中的构造函数,子类中的函数。

注明:static块是写入到内存中的,所以是会优先执行的。只要static块中的语句有一个被执行了,那么整个static块都会执行。

附录代码:

class HelloA {
public HelloA() {
System.out.println("HelloA");
}

{
System.out.println("I'm A Class");
}
static {
System.out.println("STaticA");
}
}

public class HElloB extends HelloA
{

HElloB() {
System.out.println("HelloB");
}

{
System.out.println("I'm B class");
}
static {
System.out.println("Static B");
}

public static void main(String[] args) {
new HElloB();
}

}


运行的结果为:

STaticA
Static B
I'm A Class
HelloA
I'm B class
HelloB


多态:
对象为子类的情况下:子类中如果有这个函数,那么对象会调用子类中的函数,否则就会调用父类中的函数。

对象为父类的情况下:只会调用父类中的函数。

示例代码:

/**
* 上层的父类
* @author Feige
*
*/
class Person7{
public void fun1() {
System.out.println("No1,Person7.fun1");
}
public void fun2() {
System.out.println("No2,Person7.fun2");
}
}

class Student3 extends Person7{
public void fun1() {
System.out.println("No3,Student3.fun1 继承person7");
}
public void fun3() {
System.out.println("No4,Student.fun3继承person7");
}
}
public class DuoTai {

public static void main(String[] args) {
Student3 s4=new Student3();
s4.fun1();
s4.fun2();
s4.fun3();

Person7 s7=new Person7();
//Student3 s7=(Student3)s6;
s7.fun1();
s7.fun2();
}
}
运行结果:

No3,Student3.fun1 继承person7
No2,Person7.fun2
No4,Student.fun3继承person7
No1,Person7.fun1
No2,Person7.fun2


如有错误,请指正,谢谢~欢迎评论!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息