黑马程序员技术交流社区

标题: 继承小问(输出结果) [打印本页]

作者: pengyu    时间: 2014-6-4 16:21
标题: 继承小问(输出结果)
class B {
private int radius = 10;
public void draw() {
System.out.println(“B.draw(), radius = ” + radius);
}
public B() {
System.out.println(“B constructor”);
draw();
}
}
public class A extends B {
private int radius = 1;
public void draw() {
System.out.println(“A.draw(), radius = ” + radius);
}
public A(int radius) {
this.radius = radius;
System.out.println(“A constructor”);
}
public static void main(String[] args) {
A a = new A(5);
}
}

作者: Whero    时间: 2014-6-4 16:43
你觉得运行结果什么地方不能理解?
作者: 苗润    时间: 2014-6-4 17:48
  1. public class Test9 {
  2.         public static void main(String[] args){
  3.                 new GoodStudent();//创建GoodStudent对象  执行了person的构造方法  
  4.         }
  5. }

  6. class Person{
  7.         public Person(){
  8.                 System.out.println("调用了Person的无参构造方法");
  9.         }
  10.        
  11. }
  12. class Student extends Person{
  13.         public Student(){
  14.                 System.out.println("调用了student的无参构造");
  15.         }
  16.         public Student(String str){
  17.                 System.out.println("调用了Student的有参构造方法-参数为:"+str);
  18.         }
  19.        
  20. }
  21. class GoodStudent extends Student{
  22.         public GoodStudent(){
  23.                
  24.                 super("nihao");//可以指定调用哪个Student的构造方法,不能指定person的构造方法
  25.                 System.out.println("创建了GoodStudent,使用了GoodStudent的无参构造方法");
  26.         }
  27.        
  28. }
复制代码

这是我写的代码 你看看 我不知道你到底是想问什么   我这个通过super指定调用父类的哪一个构造方法  
关于你的那个代码  如果子类没有覆盖父类的方法(你的代码中 父类的方法就是draw) 当调用方法时  就是调用父类的方法 如果在把父类的方法覆盖了 就会调用自己的方法 不会调用父类的方法 如果想要调用父类的方法 需要去创建父类对象来实现




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2