完成课件中的动手动脑的或需要验证的相关内容。

信1605-3 于丁一  20163578

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

 

构造函数的主要作用是初始化,因为子类继承了父类,所以父类有的东西子类也有,所以在子类的构造方法运行之前必须调用父类的构造方法。不能反过来,因为子类继承父类所以要有个顺序来执行,先有父类再有子类,所以不能反过来。

 

  • 请自行编写代码测试以下特性(动手动脑):

    • 在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。

 

 

//信1605-3 于丁一 20163578

package super调用;

class Animal {

public int age=10;

public String name;

public void eat(){

System.out.println("有吃东西的能力");

}

public Animal(int age){

this.age=age;

System.out.println("构造方法执行了");

}

}

class Dog extends Animal{

public int age=20;

public void eat(){

System.out.println("狗有吃骨头的能力");

}

public Dog(int age){

super(age);

System.out.println("Dog构造方法执行了");

}

}

public class Test {

public static void main(String[] args){

Animal a=new Animal(10);

a.eat();

Dog b=new Dog(20);

b.eat();

}

结果截图:

  • 运行以下测试代码

回答问题:

1.   左边的程序运行结果是什么?

2.   你如何解释会得到这样的输出?

3.   计算机是不会出错的,之所以得

                  到这样的运行结果也是有原因的,

                  那么从这些运行结果中,你能总

                  结出Java的哪些语法特性?

         请务必动脑总结,然后修改或编写一些代码进行测试,验证自己的想法,最后再看         后面的PPT给出的结论

 

 

运行前的结果猜想:

100

200

200

201(错误)

201

实验结果截图:

解释:前两个结果就是正常输出,第三个将child复制给parent,因为parent是父类,child是子类。所以第四个单纯的parent.myValue++无法实现加一的目的,而第五个体现了parent是child的父类,所以最后结果加一。

时间: 2024-10-29 16:50:50

完成课件中的动手动脑的或需要验证的相关内容。的相关文章

06-继承与多态 课程作业01 完成课件中的动手动脑的或需要验证的相关内容

一.怎样判断对象是否可以转换? 可以使用instanceof判断一个对象是否可以转换为目标类型: 1 public class TestInstanceof 2 { 3 public static void main(String[] args) 4 { 5 //声明hello时使用Object类,则hello的编译类型是Object,Object是所有类的父类 6 //但hello变量的实际类型是String 7 Object hello = "Hello"; 8 //String是

java中06的动手动脑

任务一: 代码: package Shi;   import javax.swing.JOptionPane;   public class Shi6d1 {   public static void main(String[] args) {   int array[] = new int[10]; for(int m=0;m<10;m++) {array[m] = (int)(Math.random()*100);} String str=""; for(int m=0;m&

JAVA中动手动脑

第一个动手动脑: 首先用枚举类型定义两个变量,然后判断两个变量是否引用同一对象,在判断枚举类型是否是原始数据类型,再从字符串中转换,最后列出所有的对象. 很明显,这两个变量都是枚举类型,但是这两个变量引用的对象不一样,同样,枚举类型并不是原始数据类型. 得出的结论就是,同是枚举类型,但是引用的对象可以不同,枚举类型并不是原始数据类型. 我可能还是用不好枚举类型. 第二个动手动脑: 很明显,+a+b,只不过是先显示a再显示b, 而a+b+“  .. ”,就是先把a+b的结果显示出去,然后再加上要显

java中08的动手动脑

任务一: ATM机模拟: 代码: //赵子鸣,20153131,信1505-2班 package Shi; import java.util.Scanner; abstract class Atm{ public abstract void zhuan(String a,double b); public abstract void setmima(String a); public abstract double getyue(); public abstract String getmima

java中05的动手动脑

动手动脑1: 结果为: 分析:"="判断的是两个对象是否相同(储存的地址和储存的内容) 而"equals"函数判断的是两个对象的值是否相等 String类的Length().charAt(). getChars().replace(). toUpperCase(). toLowerCase().trim().toCharArray()使用说明: 1.string.length()是用来求字符串的长度,返回值为字符串的长度. length():public int l

java学习——关于java课件上动手动脑问题简单的分析

问题一:关于以下的代码为什么会产生错误的问题的简单分析. 第一个动手动脑提供了一下的代码,可以发现,在Foo的这个类中只定义了一个Foo(int)类型的构造函数,在之前的学习工程中,我们并没有接触到java的构造函数的声明过程,因此,在类中没有书写构造函数的方法的时候,编译器默认继承Object类,并在编译的时候会产生一个参数为空的构造函数,然而在定义的Foo这个类的时候,给予了一个Foo(int)类型的构造方法,所以在上述Test的调用过程中,obj1并不能够调用到new Foo()这个构造函

动手动脑 自信成就人生之课后作业

?动手动脑一 请看以下代码: 上述代码可以顺利通过编译,并且输出一个“很奇怪”的结果: Ljava.lang.Object;@ba8a1dc 为什么会这样? 解释:java的object数组不能转化成string数组,在转换出错时,首先要观察被转换的对象原来是什么类型,或解开多层的包装,直到获取对象的最终类型,然后把不能再分解的类型转换成自己目标类型的对象...(稍微能理解) ?动手动脑二 随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中.

java09动手动脑

一.动手动脑 运行AboutException.java示例 1)源代码 import javax.swing.*; class AboutException { public static void main(String[] a) { double i=-1, j=0, k; k=i/j; try { k = i/j; // Causes division-by-zero exception //throw new Exception("Hello.Exception!"); }

JAVA09异常处理之动手动脑问题

动手动脑1:为什么不管是否有异常发生,finally语句块中的语句始终保证被执行? 我们在写代码时,如果finally块中的代码过多会导致字节码条数"膨胀",因为finally中的字节码会被"复制"到try块和所有的catch块中.finally语句块主要用于解决资源泄露问题,它位于catch语句块之后,JVM保证它们一定执行. 动手动脑2:CatchWho.java,写出程序运行结果: ArrayIndexOutOfBoundsException/内层try-ca