顶楼上的兄弟,正解!
class A //定义类A
{
public void fun1(){ //定义fun1()方法
System.out.println("A-->public void fun1()");
}
public void fun2(){ //定义fun2()方法
this.fun1();
}
}
class B extends A { //子类通过extends继承父类
public void fun1(){
System.out.println("B-->public void fun1(){}"); //覆写父类中的fun1()方法
}
public void fun3(){
System.out.println("B-->public void fun3(){}"); //子类自己定义的方法
}
}
class PolDemo03
{
public static void main(String[] args){
A a = new B(); //此时声明的是父类对象
B b = (B)a; //此时发生了向下转型关系
b.fun1(); //调用被覆写的方法
b.fun2(); //调用父类的方法
b.fun3(); //调用子类自己定义的方法
}
}
修改之后输出运行结果
B-->public void fun1(){}
B-->public void fun1(){}
B-->public void fun3(){}
但是我不明白的是,楼主的代码中public class PolDemo03,出现了公共类,编译时会报错Demo.java:18: 错误: 类PolDemo03是公共的, 应在名为 PolDemo03.java 的文件中声明
虽然去掉public修饰词,可以通过编译,可是我不太明白为什么,为什么不能加public修饰? |