如何调用父类的方法
abstract class A
{
public A ()
{
System.out.println("抽象基类的构造方法");
}
public static A getInstrance()
{
return new B();
}
void doIt()
{
System.out.println("父类的方法");
}
}
class B extends A
{
B()
{
System.out.println("子类的构造方法");
}
void doIt()
{
System.out.println("子类的方法");
}
}
class C
{
public static void main(String[] args)
{
A a = A.getInstrance();
a.doIt();
}
}
/*
如何调用 父类的 doIt() 方法????
*/
------解决方案--------------------abstract class A
{
public A ()
{
System.out.println("抽象基类的构造方法");
}
public static A getInstrance()
{
return new B();
}
void doIt()
{
System.out.println("父类的方法");
}
}
class B extends A
{
B()
{
System.out.println("子类的构造方法");
}
void doIt()
{
super.doIt(); /*HERE*/
System.out.println("子类的方法");
}
}
class C
{
public static void main(String[] args)
{
A a = A.getInstrance();
a.doIt();
}
}
output:
抽象基类的构造方法
子类的构造方法
父类的方法
子类的方法
------解决方案--------------------不可以, 你类A定义成抽象类,没法实例化,所以不能调用A类的方法喽~
而你main中生成的是B的实例, 所以只能调用B类中的方法,想调用A类的只有在B类用super啦
------解决方案--------------------A类是抽象类,没有实列,所以他的方法只能被子类调用,或者在他内部调用,在子类中调用,一定要用super关键字修饰,如果子类重写了父类中的某个方法(doIt()),也就是说隐藏了该方法,在除了子类和本身之外,不能调用父类的doit()方法,