2.阅读下面程序,分析是否能编译通过?如果不能,说明原因。应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来?
编译不能通过,构造函数调用必须是构造函数中的第一个语句,拔super("Hello.Grandparent.");提前
结果:
GrandParent Created.String:Hello.Grandparent.
Parent Created
Child Created
因为继承,不能。
3 . 阅读下面程序,分析程序中存在哪些错误,说明原因,应如何改正?正确程序的运行结果是什么?
有3个错,向上转型父类中没有sleep;向下装型中没有加强制转换;声明父类中没有实例。
改为:
package 为乐;
class Animal{
void shout(){
System.out.println("动物叫!");
}
public void sleep(){
}
}
class Dog extends Animal{
public void shout(){
System.out.println("汪汪......!");
}
public void sleep() {
System.out.println("狗狗睡觉......");
}
}
public class Test{
public static void main(String args[]) {
Animal animal;
animal= new Dog();
animal.shout();
animal.sleep();
Dog dog = (Dog) animal;
dog.sleep();
Animal animal2 = new Animal();
Dog a=new Dog();
animal2=a;
dog = (Dog)animal2;
dog.shout();
}
}
4.运行下列程序
package 为乐;
class Person {
private String name ;
private int age ;
public Person(String name,int age){
this.name = name ;
this.age = age ;
}
}
public class Test{
public static void main(String args[]){
Person per = new Person("张三",20) ;
System.out.println(per);
System.out.println(per.toString()) ;
}
}
(1)调用了Object的输出方法。
(2)对象输出时一定会调用Object类中的toString()方法打印内容
(3)person类覆写了object类中的tostring方法就输出对了
(二)实验总结
1.

第一题最后改完狮子喂养不好弄了,应该数组和单独都有。
(三)代码托管(务必链接到你的项目)
![]()
http://git.oschina.net/shuoge/java4