2014-12-26 6 views
0

Я пытаюсь освоить основы Java и ООП. Насколько я понимаю, если у меня есть объект Circle, который создается с переменным радиусом и передает его double x, должны ли методы объекта иметь доступ к ним?Метод объекта не может получить доступ к переменным объекта Object?

package classes; 

public class Circle { 

    Circle(double radius) { 
     double x = radius; 
    } 

    double area() { 
     return x * x * 3.1415; // x can't be resolved to a variable 
    } 

} 

ответ

3

x доступна только в пределах конструктора Circle. Объявляет его на уровне класса, так что можно получить с помощью метода area

public class Circle { 
    private double x; 

    Circle(double radius) { 
     this.x = radius; 
    } 

    ... 
} 
0

В вашем примере double x ограничен конструктору. Если вы переместите его на уровень объекта, он будет работать так, как вы ожидаете.

public class Circle { 

    private double x; 

    Circle(double radius) { 
     this.x = radius; 
    } 

    double area() { 
     return x * x * 3.1415; 
    } 

} 
0

Здесь у вас есть области видимости проблемы. Когда вы объявляете x внутри конструктора, вы говорите, что он будет доступен только внутри него.

Вы можете объявить его вне:

public class Circle { 
    double x; 

    Circle(double radius) { 
     x = radius; 
    } 

    ... 
} 
0

После определения того, при использовании уровня класса «это» для readiblity.

public class Circle { 
     private double x =0.0; 
    Circle(double radius) { 
     this.x = radius; 
    } 

    double area() { 
     return this.x * this.x * 3.1415; // x can't be resolved to a variable 
    } 

} 
0

Попробуйте этот код:

 public class Circle { 
     private double x =0.0; 
     Circle(double radius) { 
    this.x = radius; 
} 

double area() { 
    return this.x *  this.x * Math.PI; 
     } 

} 
Смежные вопросы