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

java学习笔记(八)—— extends and override

2015-06-11 11:48 591 查看
子类对象在实例化之前会默认调用父类的构造方法。

class Person {
private String name;
private int age;

public Person() {
System.out.println("person constructor");
}

}

class Student extends Person {
private String school;

public Student() {
System.out.println("student constructor");
}

}

public class Test {
public static void main(String args[]) {
Person a = new Student();
}
}


运行结果:

person constructor
student constructor


接下来是关于方法覆盖的问题

public class Override {
public static void main(String args[]) {
new Student().fun();
}
}

class Person {
private void print() {
System.out.println("spuer print()");
}

public void fun() {
this.print();
}
}

class Student extends Person {
void print() {
System.out.println("child print()");
}

}


运行结果:

spuer print()


并不是想象中的super print(),因为父类中的print()方法是private访问的。所以子类中的print方法是相当于定义了一个新的方法。所以执行的是父类中的方法。

public class Override {
public static void main(String args[]) {
new Student().fun();
}
}

class Person {
void print() {
System.out.println("spuer print()");
}

public void fun() {
this.print();
}
}

class Student extends Person {
public void print() {
System.out.println("child print()");
}

}


运行结果:

child print()


注意两个程序中print方法中的访问修饰符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java java算法