2016-08-20 11 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私的メソッドとパブリックメソッドは静的ではないので、静的関数内でアクセスすることはできません。まさか?

コメント5この行はエラーを示している理由は?IMOそれは有効な方法

+0

厳密に別のバージョンのオブジェクトを含むオブジェクトを作成すると、無限ループにつながります。すべての猫に別の猫がいれば、私は猫を作ります。その猫には別の猫が入っています。別の猫が入っていて、別の猫が入っています。 – Carcigenicate

+0

コンパイラはこれらのすべてについて、_anyway_の理由を説明していませんか?はい、 'this'は同じインスタンス内のメソッドにアクセスします。なぜ' // 1'が必要なのですか? '2'と' 3'はコンパイルされません。 – vlaz

+0

@Carcigenicateので、私はクラスのオブジェクトを同じクラスの内部に作成すべきではありません:)説明をありがとう。なぜその行が動かないのかコメント5を説明できますか?私はnetbeansによって提起された警告を理解していません。 – ekaf

答えて

1

mainメソッドが静的であるの内側ではありません。したがって、thisは使用できません。静的メソッドはオブジェクトなしで使用できますが、すべての非静的メソッドではメソッドが必要です。

コメント5のステートメントはどのメソッドにも属していません。これはJavaでは許可されていません。

関連する問題