当前位置:编程学习 > JAVA >>

java初学者求教程序运行

class Come1
{
private int age;
 Come1(int age)
{
this.age= age;
}
}
class ComeDemo1 
{
public static void main(String[] args) 
{
//Come c2= new Come(4);//创建对象,并为对象传递参数
//Come c1=new  Come(3);
//System.out.println("a"+c1.equals(c2));
Come1 p=new Come1(3);

System.out.println(p.age);
}
}
怎么才能把对象的age打印出来啊,上面的输出语句是错误的, --------------------编程问答-------------------- age 是私有变量
不能直接通过对象.的方式访问 --------------------编程问答-------------------- come1中定义一个public getAge方法返回age --------------------编程问答-------------------- 类中在写一个方法!
public int getAge(){
    return this.age;
}

然后再main方法中输出;
System.out.println(p.getAge());

结贴给分吧! --------------------编程问答-------------------- 你在Come1类的时候应该写一个getAge()方法,因为age为私有成员变量,对象不能直接获得,而应该通过方法得到。
public int getAge(){
    return this.age;
}
最后输出的时候为:System.out.println(p.getAge())就OK了
--------------------编程问答-------------------- 私有变量age只能在come1本身中使用对象调用啦 --------------------编程问答-------------------- --------------------编程问答-------------------- 加getAge()方法,吧 --------------------编程问答-------------------- class Come1
{
private int age;
 Come1(int age)
{
this.age= age;
}
public int getAge()
{
return this.age;
}
}
class ComeDemo1 
{
public static void main(String[] args) 
{
//Come c2= new Come(4);//创建对象,并为对象传递参数
//Come c1=new  Come(3);
//System.out.println("a"+c1.equals(c2));
Come1 p=new Come1(3);

System.out.println(p.getAge());
}
} --------------------编程问答--------------------
引用 楼主 wuhen010 的回复:
class Come1
{
private int age;
 Come1(int age)
{
this.age= age;
}
}
class ComeDemo1 
{
public static void main(String[] args) 
{
//Come c2= new Come(4);//创建对象,并为对象传递参数
//Come c1=new  Come……

打印出来很简单,public int age;
这样就行了,但是不推荐,一般的方法是
private int age;
然后提供get和set方法。 --------------------编程问答-------------------- 这个。。。楼主先看一下java中的域修饰符。

private,public,protected,default
解决你的问题也很简单,给age一组getter() setter()方法即可,这也是初级封装,看来楼主对opps还是理解的不够啊,加油吧! --------------------编程问答-------------------- age是私有变量,加public方法
比如在Come1类里面加
public int getAge() {
   return this.age;
} --------------------编程问答--------------------
引用 10 楼 chengxuyuanwangwei 的回复:
这个。。。楼主先看一下java中的域修饰符。

private,public,protected,default
解决你的问题也很简单,给age一组getter() setter()方法即可,这也是初级封装,看来楼主对opps还是理解的不够啊,加油吧!


光标在在类Come1中用getter/setter方法吧
eclipse 等右击选Source或ALT+SHIFT+S -> Generate Getters and Setters... --------------------编程问答-------------------- public int getAge(){
    return this.age;
}
--------------------编程问答-------------------- 都是private惹的祸 --------------------编程问答-------------------- --------------------编程问答-------------------- 就是同志们说的,加一个getAge方法,通过访问这个方法获得age

class Come1
{
   private int age;
   Come1(int age)
   {
      this.age= age;
   }
   public int getAge(){
      return age;
   }
  
}
class ComeDemo1 
{
    public static void main(String[] args) 
   {

      Come1 p=new Come1(3);

      System.out.println(p.getAge());
    }
} --------------------编程问答-------------------- Class classType = p.getClass();
Field field = classType.getDeclaredField("age");
field.setAccessible(true);
System.out.println(field.get(p));

把这几行代码替换掉你原来的输出代码,就可以打印出你需要打印的东西了,记得抛出相应的异常哦! --------------------编程问答-------------------- 楼上的不要给出这么高深的回复,初学者肯定还不懂反射是什么,他们其实是对面向对象的基础都不了解才会写出这样的代码

敢问楼主学java编程看的是什么书? --------------------编程问答--------------------
引用 18 楼 wc0077 的回复:
楼上的不要给出这么高深的回复,初学者肯定还不懂反射是什么,他们其实是对面向对象的基础都不了解才会写出这样的代码

敢问楼主学java编程看的是什么书?

弱弱的问一句:你看什么书? --------------------编程问答--------------------
引用 19 楼 Xuan6251237011 的回复:
引用 18 楼 wc0077 的回复:楼上的不要给出这么高深的回复,初学者肯定还不懂反射是什么,他们其实是对面向对象的基础都不了解才会写出这样的代码

敢问楼主学java编程看的是什么书?
弱弱的问一句:你看什么书?


java基础的看过thinking in java --------------------编程问答-------------------- 因为你的age声明的是private,所以不能直接通过创建的对象调用,需要自己写一个get()函数,你在你的类里这样写:

public int getAge(){
    return this.age;
}

然后在main函数中这样写:

System.out.println(p.getAge());
--------------------编程问答-------------------- 大神们已经帮你解决了,你知道了么
private修饰的变量只能在类的内部使用,类外面是无法调用的。

在你的Come1的类中加上一个方法
public int getAge(){
      return this.age;
   }
主函数调用就写
System.out.println(p.getAge()); --------------------编程问答-------------------- age是私有的不能对象外引用~~~ --------------------编程问答-------------------- 大神们已经说得很清楚了。楼主好好看看访问说明符吧。private是提供限制级别最高的访问。只能在定义的类级别以内使用。 --------------------编程问答-------------------- age是Come1类的私有成员变量,只能在该类中访问.其他地方都不能访问,可以更改一下age的权限修饰.. --------------------编程问答-------------------- 呵呵,这些基础性的东西在别人说的方法之后还要自己思考一下其中的原因,这样才能有提高,做到举一反三
--------------------编程问答-------------------- 写一个get(),set()方法就轻松解决了 --------------------编程问答-------------------- class Come1
{
private int age;
 public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
Come1(int age)
{
this.age= age;
}
}
class ComeDemo1  
{
public static void main(String[] args) 
{
//Come c2= new Come(4);//创建对象,并为对象传递参数
//Come c1=new  Come(3);
//System.out.println("a"+c1.equals(c2));
Come1 p=new Come1(3);

System.out.println(p.getAge());
}
}

好运 --------------------编程问答-------------------- 没学过这种语言,刚刚接触C语言 --------------------编程问答-------------------- 呵呵,精神上支持你一下。 --------------------编程问答--------------------
class Come1 {
private int age;

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

Come1(int age) {
this.age = age;
}
}

class ComeDemo1 {
public static void main(String[] args) {
// Come c2= new Come(4);//创建对象,并为对象传递参数
// Come c1=new Come(3);
// System.out.println("a"+c1.equals(c2));
Come1 p = new Come1(3);

System.out.println(p.getAge());
}
}
--------------------编程问答-------------------- java 里面类的变量,初学者应该把每个变量的geter和seter 都要写出来。需要调用变量的时候就可以用geter调用,用seter 赋值,这是面向对象的思想--封装;这样你就会可以在geter 上面加上public让你的main方法可以间接访问age
ps: geter ,seter 例子
public void setAge(int age){
  this.age = age;
}
public int getAge(){
  return this.age;
} --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 私有变量age只能在类里面用 --------------------编程问答-------------------- class Come1
{
private int age;
 Come1(int age)
{
   this.setAge(age);
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}

class Test6 
{
public static void main(String[] args) 
{
//Come c2= new Come(4);//创建对象,并为对象传递参数
//Come c1=new  Come(3);
//System.out.println("a"+c1.equals(c2));
Come1 p=new Come1(3);

      System.out.println(p.getAge());
}
}
私有变量 只能通过getter和setter方法获得
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,