public class Parent
{
public void sayHello()
{
System.out.println("Hello");
}
}public class Child extends Parent
{
public void sayBye()
{
System.out.println("Bye");
}
}我声明的时候:
Parent myInstance;
我赋值给他:
myInstance = new Child();
但是,我这么写,编译不通过:
myInstance.sayBye();
为什么呢?
{
public void sayHello()
{
System.out.println("Hello");
}
}public class Child extends Parent
{
public void sayBye()
{
System.out.println("Bye");
}
}我声明的时候:
Parent myInstance;
我赋值给他:
myInstance = new Child();
但是,我这么写,编译不通过:
myInstance.sayBye();
为什么呢?
要调用子类的方法,要强制转换成子类
Child c = (Child)myInstance ;
c.sayBye();
我们可以说Child是一个Parent, 但不可以反过来说,所以Parent不可以调用Child的方法。
Parent myInstance;我赋值给他:
myInstance = new Child();但是,我这么写,编译不通过:
myInstance.sayBye();
为什么呢?
myInstance是一个使用Child类型构造器实例的Parent类型的对象。Parent类型没有sayBye()方法,所以编译不通过。
因为myInstance是用Child类型构造器实例的对象,故可以把myInstance强制转换为Child类型对性,下面的代码可以编译通过。
((Child)myInstance).sayBye()
另外,貌似在一个java文件中,只有一个主类可以声明为public。
Child child = new Child();
child.sayBye();如果你想实现的是父类引用指向之类对象
那就子类的方法override父类的sayHello();public class Child extends Parent
{
public void sayHello()
{
System.out.println("123");
}
}
那我怎么样才可以调用sayBye呢?