class Student extends Person {
public Student(String name) {
super(name);
}
}
class Demo {
public static void main(String[] args) {
Student s = new Student("zhangsan");
System.out.println(s.getName());
}
}
在这里我要说明一点, 平时我们说的私有属性不能够继承, 其实这种说法不完全正确, 其实私有属性是可以隐式继承的, 上述代码就验证了, 当然面试的时候, 你肯定得说私有属性不能够被继承, 要是你说能够被继承, 那你肯定挂了.
我再来详细解释一下这段代码吧, 这个代码父类Person类有一个name属性, 父类的name本来为null , 但是通过super(name) 父类的那么变为 "zhangsan"了, 那么子类通过 getName()方法是不是也获取了父类的名称"zhangsan", 其实这个就和线程的代码一回事, 线程的代码默认第一个是Thread-0, 而我这里的代码时null而已 , 算了我再把代码改一下, 这样更清晰一点:
class Thread {
private String name;
public Thread() {
name = "Thread-0";
}
public Thread(String name) {
this.name = name;
}
public String getName(){
return name;
}
}
class Test extends Thread {
public Test() {
super();
}
public Test(String name) {
super(name);
}
}
class Demo {
public static void main(String[] args) {
//这个就好比创建一个无参的线程;
Test t1 = new Test();
System.out.println(t1.getName());
//这个就好比创建一个有参的线程
Test t2 = new Test("zhangsan");
System.out.println(t2.getName());
}
} 作者: 王杰123 时间: 2013-4-4 18:55