2008-11-06 25 views

Trả lời

119

Từ khóa bạn đang tìm kiếm là super. Xem ví dụ this guide.

+3

Có vẻ như trong C++ bạn có thể gọi một phương thức tổ tiên cụ thể, nhưng không phải java, bạn chỉ có thể chuyển nó lên chuỗi ... – rogerdpack

6

gọi super.myMethod();

111

Chỉ cần gọi nó bằng siêu.

public void myMethod() 
{ 
    // B stuff 
    super.myMethod(); 
    // B stuff 
} 
4

Sử dụng từ khóa super.

14

super.MyMethod() nên được gọi bên trong số MyMethod() của số class B. Vì vậy, nó nên được như sau

class A { 
    public void myMethod() { /* ... */ } 
} 

class B extends A { 
    public void myMethod() { 
     super.MyMethod(); 
     /* Another code */ 
    } 
} 
3
super.baseMethod(params); 

gọi các phương pháp cơ bản với siêu từ khóa và vượt qua params tương ứng.

15

trả lời như sau:

super.Mymethod(); 
super();    // calls base class Superclass constructor. 
super(parameter list);   // calls base class parameterized constructor. 
super.method();   // calls base class method. 
1
// Using super keyword access parent class variable 
class test { 
    int is,xs; 

    test(int i,int x) { 
     is=i; 
     xs=x; 
     System.out.println("super class:"); 
    } 
} 

class demo extends test { 
    int z; 

    demo(int i,int x,int y) { 
     super(i,x); 
     z=y; 
     System.out.println("re:"+is); 
     System.out.println("re:"+xs); 
     System.out.println("re:"+z); 
    } 
} 

class free{ 
    public static void main(String ar[]){ 
     demo d=new demo(4,5,6); 
    } 
} 
2
class test 
{ 
    void message() 
    { 
     System.out.println("super class"); 
    } 
} 

class demo extends test 
{ 
    int z; 
    demo(int y) 
    { 
     super.message(); 
     z=y; 
     System.out.println("re:"+z); 
    } 
} 
class free{ 
    public static void main(String ar[]){ 
     demo d=new demo(6); 
    } 
} 
7

Tôi khá chắc chắn rằng bạn có thể làm điều đó bằng cơ chế Reflection Java. Nó không đơn giản như sử dụng siêu nhưng nó mang lại cho bạn nhiều quyền lực hơn.

class A 
{ 
    public void myMethod() 
    { /* ... */ } 
} 

class B extends A 
{ 
    public void myMethod() 
    { 
     super.myMethod(); // calling parent method 
    } 
} 
+0

Điều này không hiển thị bất kỳ sự phản chiếu java nào trong mã và cũng giống như các mã khác . Có nhiều câu trả lời hơn không? –

1

Nếu ur sử dụng các phương pháp này để khởi tạo sau đó sử dụng nhà thầu của lớp A và vượt qua từ khóa siêu bên trong constructor của lớp B.

Hoặc nếu bạn muốn gọi một phương pháp siêu lớp từ phương pháp lớp con sau đó bạn phải sử dụng siêu từ khóa bên trong phương thức lớp con như: super.myMethod();

3

Xem, ở đây bạn được trọng một trong những phương thức của lớp cơ sở vì thế nếu bạn muốn gọi phương thức lớp cơ sở từ lớp kế thừa sau đó bạn phải sử dụng siêu từ khóa trong cùng một phương pháp của lớp kế thừa.