public class Apple {
private String color;
private double weight;
public Apple() {}
//提供有参数的构造器
public Apple(String color,double weight) {
this.color=color;
this.weight=weight;
}
//省略color、weight的srtter和getter方法
//重写toString()方法,用于实现Apple对象的“自我描述”
public String toString() {
return"一个苹果,颜色是:"+color+",重量是:"+weight;
}
}
public class ToStringTest {
public static void main(String[]args) {
Apple a=new Apple("红色",5.68);
//打印Apple对象
System.out.println(a);
}
}
输出结果:一个苹果,颜色是:红色,重量是:5.68
我是萌新啊
这输出很正常啊 你用的apple类的对象 当然可以访问本类的私有变量啊
私有变量只能在类的内部调用,正好都放在一个类里面了
这不是放在一个类里了?当然能访问了
用private修饰的成员或者构造器只能在定义他的类中访问。下面的tostring方法中你调用了Apple类所以可以用里面的成员
一个类的对象是可以访问它的私有变量
这是放在同一个类了,怎么不可以访问。。请说明你是怎么想的?
上面都是正解,声明private表示该变量是私有的,只有内部能使用,外部不能使用。toString在该类内部所以可以使用。
在同一个类里面,方法是可以访问私有变量,所以toString能访问color和weight,而toString方法是public的,外部能访问toString,所以给你的错觉是,外部能访问类的私有变量
因为你的tostring()方法与那些私有变量处于同一个类中,而私有变量只能在本类中使用,所以该方法可以调用私有变量
你自己的问题提的有问题,你这个toString()方法就是Apple类中的一个方法,当然能够访问本类的私有方法了。
在同一个类中是可以访问的,不可以访问的是非本类
私有变量只能在本类中调用,其他类不能调用。
私有对象本类对象当然可以访问了,在访问里面私有成员,然后再调用方法当然可以了
首先你的输出结果描述不准确:
1.System.out.println(a);输出的应该是Apple对象的引用,应该是一串内存地址。按照你的输出结果应该是a.toString()后才应该出现的结果。
2.private修饰的变量是在本类中使用的,Apple类的toString()重写方法是可以访问本类的私有变量的。所以即使你在任意其他类进行调度Apple类的toString()方法,都是可以输出出来的。另外私有变量在特殊场景下也是可以访问和修改的,可以查看下反射机制。
哈哈哈,私有是针对外人的。
private变量只本类能使用,你的toString方法是在Apple该类内部所以可以使用。
建议阅读一下java的继承相关;private,public,petect 是与继承有关联的;在类的内部是没有这个限制的。。
private 变量只能被自己本类访问,toString()与他同一个类啊
很正常,因为new了一个类对象,而toString将其输出,调用对象类传入参数自然会输出。
你调用的是类的公有方法,这个没问题吧。
一个类在它自己的方法里面当然可以访问自己的私有变量了。
首先要搞清楚访问的到底是方法还是变量。