日期:2014-05-20  浏览次数:21569 次

如何调用父类的方法
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()方法,