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

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