JAVA课程作业06

问题一:

为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?

构造函数主要用于为对象分配空间,进行初始化。

构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。

子类拥有父的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。

问题二:

请自行编写代码测试以下特性:在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。
 1 class Base{
 2 
 3        protected double size;
 4 
 5        public Base(){
 6                  size=0; System.out.println("Base类无参构造");
 7        }
 8        public Base(double s){
 9                   size=s;System.out.println("Base类有参构造");
10        }
11 }
12 
13 public class Sub extends Base{
14 
15             private String color;
16 
17             public Sub(){
18 
19                 color="blue";System.out.println("Sub类无参构造");
20 
21             }
22 
23             public Sub(String c){
24 
25                 color=c;System.out.println("Sub类有参构造");
26 
27             }
28 
29             
30             public Sub(double s,String c){
31 
32                 super(s);    //调用Base类中带一个参数的构造方法
33 
34                 color=c;
35 
36                 System.out.println("Sub类有参构造");
37             }
38             
39             public static void main(String[] args){
40                 Sub s1=new Sub(); 
41                 Sub s2=new Sub("red");
42                 Sub s3=new Sub(0,"red");
43             }
44 }
45 
46 //要在子类中显式调用直接父类带参数的构造方法,可通过super()调用来实现。
47 
48          

 

posted @ 2015-11-08 18:53  小么小儿郎  阅读(174)  评论(0编辑  收藏  举报