2016-08-20 55 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中是不允许的。

相关问题