2016-08-20 87 views
0
package constructorlatest; 
    import java.util.*; 

    public class ConstructorLatest { 

    public static void main(String[] args) { 

     A a1=new A(); 
     a1.calculate(); 
     a1.display(12); 
     ConstructorLatest Cl=new ConstructorLatest(); //1 
     Cl.privateMethod(); 
     this.privatemethod(); //2 
     this.publicMethod(); //3 

    } 
    ConstructorLatest C2=new ConstructorLatest(); //4 
    C2.privateMethod();   // 5    

    private void privateMethod() 
    { 
    System.out.println("this is a private method in main class"); 
    } 

    void publicMethod() 
    { 
     System.out.println("this is a public method in main class"); 
    } 

     this.privatemethod(); 
     this.publicMethod(); 

} 



    class A 
    { 

    void calculate() 
    { 
     int x,y,sum; 
     Scanner sc=new Scanner(System.in); 
     x =sc.nextInt(); 
     y =sc.nextInt(); 
     sum=x+y; 
     display(sum); 

    } 

    void display(int sum) 
    { 
     System.out.println("no constructor created hence default constructor");   
     System.out.println(sum); 
    } 

} 

評論1有沒有什麼需要創建主類的對象(一般)。我聽說過這個()關鍵字可以訪問一個類的所有方法,那爲什麼他們會需要創建一個對象類的ConstructorLatest類。是否需要在同一個類中創建一個類的對象?

評論2因爲privateMethod和公共方法是非靜態的,我們無法在靜態函數內部訪問它們。對吧?

評論5,爲什麼這條線顯示錯誤?國際海事組織它不是內有效的方法

+0

嚴格地創建一個包含其自身的另一個版本的對象將導致無限循環。如果每隻貓都含有另一隻貓,並且我創建了一隻貓,那麼這隻貓將包含另一隻貓,它將包含另一隻貓,它將包含另一隻貓,直到您耗盡內存。 – Carcigenicate

+0

編譯器是否抱怨所有這些解釋爲什麼_anyway_?是'this'在同一個實例中訪問方法_因此需要'// 1' - '2'和'3'甚至不會編譯。 – vlaz

+0

@Carcigenicate,所以我不應該在同一類中創建類的對象:)感謝您的解釋。你能解釋一下評論5爲什麼那條線不起作用。我不明白netbeans提出的警告。 – ekaf

回答

1

main方法是靜態的。因此你不能在其中使用this。靜態方法可以在沒有對象的情況下使用,但所有非靜態方法都需要一個。

帶註釋5的語句不屬於任何方法。這在Java中是不允許的。

相關問題