class TestFoo{ int x; String y; int getX() { return x; } String getY() { return y; } void setX( int x) { int Z=7; this.x=x; } } 可以添加多少个修饰符来封装此类?
时间: 2023-06-07 11:10:24 浏览: 115
这个问题属于技术问题,可以回答。TestFoo可以使用private修饰符来封装此类,以隐藏类的内部细节。getX和getY方法可以使用public修饰符,setX方法可以使用public或者private修饰符。此外,还可以使用protected和default修饰符来封装此类。
相关问题
帮我优化这段代码public class point { point point1 = new point(); private int x; private int y; public int getx(){ return x; } public void setx(int x){ this.x=x; } public int gety(){ return y; } public void sety(int y){ this.y=y; } public void printpoint(){ System.out.println("("+x+"<"+y+")"); } public static void main(String[] args) { point point1= new Point(1, 2); point1.printpoint(); } }
public class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public void printPoint() {
System.out.println("(" + x + "," + y + ")");
}
public static void main(String[] args) {
Point point1 = new Point(1, 2);
point1.printPoint();
}
}
1. 类名应该是首字母大写的Point。
2. 构造方法中的参数名应该与成员变量名不同,避免混淆。
3. 方法名应该是驼峰式命名,即首字母小写,后面的单词首字母大写。
4. printPoint()方法中的字符串拼接应该使用加号,而不是小于号。
5. 在main方法中不需要再次声明point1变量,因为在类中已经声明过了。
class StaticDemo { static int x; int y; public static int getX() { return x; } public static void setX(int newX) { x = newX; } public int getY() { return y; } public void setY(int newY) { y = newY; } } public class KY4_1 { public static void main(String[] args) { System.out.println("类变量x="+StaticDemo.getX()); System.out.println("对象变量y="+StaticDemo.getY()); StaticDemo a= new StaticDemo(); StaticDemo b= new StaticDemo(); a.setX(1); a.setY(2); b.setX(3); b.setY(4); System.out.println("类变量a.x="+a.getX()); System.out.println("对象变量a.y="+a.getY()); System.out.println("类变量b.x="+b.getX()); System.out.println("对象变量b.y="+b.getY()); } } 指出出错的地方,出错的原因
代码中存在两个错误:
1. 在 KY4_1 类中,尝试使用 StaticDemo 类的非静态成员变量 y,这是不合法的,因为 y 是一个对象级别的变量,必须通过对象来访问。
2. 在 KY4_1 类中,尝试使用 StaticDemo 类的静态方法 getX() 访问 y 变量,这也是不合法的,因为静态方法只能访问静态成员变量,而 y 是一个对象级别的变量,不是静态的。
需要将代码修改为:
```
class StaticDemo {
static int x;
int y;
public static int getX() {
return x;
}
public static void setX(int newX) {
x = newX;
}
public int getY() {
return y;
}
public void setY(int newY) {
y = newY;
}
}
public class KY4_1 {
public static void main(String[] args) {
System.out.println("类变量x=" + StaticDemo.getX());
StaticDemo.setX(1);
StaticDemo a = new StaticDemo();
a.setY(2);
System.out.println("类变量a.x=" + a.getX());
System.out.println("对象变量a.y=" + a.getY());
StaticDemo b = new StaticDemo();
b.setY(4);
System.out.println("类变量b.x=" + b.getX());
System.out.println("对象变量b.y=" + b.getY());
}
}
```
这样就可以正确地访问静态和非静态成员变量了。
阅读全文