A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM何伟 中级黑马   /  2013-3-23 20:38  /  1308 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 HM何伟 于 2013-4-2 23:59 编辑
  1. class Private1
  2. {
  3.   private String name;
  4.   private int age;
  5.   public void function()
  6.    {
  7.         name=this.name;
  8.     System.out.println(name);
  9.    }
  10.   public String function1(String name)
  11.   {
  12.    this.name=name;
  13.   }
  14. }
  15. class PrivateDemo1
  16. {
  17.   public static void main(String[] args)
  18.   {
  19.    Private1 p=new Private1();
  20.    p.function1("张三");
  21.   }
  22. }
复制代码
这段代码为什么不能运行啊,还有就this只能在构造函数中使用么?

7 个回复

倒序浏览
本帖最后由 胡志超 于 2013-3-23 21:24 编辑

public void function()
{
    name=this.name;
    System.out.println(name);
}
构造函数只是初始化字段,不是的,this也可以用在一般方法中,
你07行的name是什么???没有定义啊,错了
回复 使用道具 举报
你写的这段代码到处都是错误! 07行从来没有见过这样子的写法。10行方法明明有返回值,你却没有return返回值,所以应该编译都会出问题。Private1类的两个成员属性的都是私有的,所以外界不能直接访问,你要提供外部get和set方法。this是关键字是用来区分成员变量和局部变量的,你写的this.name代表调用者的name。下面的代码是给你更改后的代码,相信你一下就能看明白怎么回事了。
class Private1
{

        private String name;
        private int age;
        public void setName(String name){
                this.name = name;
        }
    public String getName(){
            return name;
    }
    public void setAge(int age){
            this.age = age;
    }
    public int getAge(){
            return age;
    }

}
public class PrivateDemo1 {

        public static void main(String[] args) {
                Private1 private1 = new Private1();
                private1.setAge(23);
                private1.setName("张三");
                System.out.println(private1.getAge());
                System.out.println(private1.getName());
        }

}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 贴代码的时候最好用那个工具

查看全部评分

回复 使用道具 举报
我就是想把"张三"传到founction1这个函数中,然后将"张三"通过founction这个函数把name打出来.提前是 private String name;
private int age不变动,怎样才能实现啊.能否写一段代码正确的代码,让我参阅一下

点评

追问,是点击特定楼层下的“回复”哦,否则别人那儿没有提醒的  发表于 2013-4-2 22:05
回复 使用道具 举报
class Private
{
  private String name;
  private int age;
  public void setName(String name)
  {
          this.name=name;
  }
  public void setAge(int age)
  {
          this.age=age;
  }
  public  void function()
   {
      System.out.println("name"+name);
      System.out.println("age"+age);
   }
class PrivateDemo {
        public static void main(String[] args) {
                Private p=new Private();
                p.setName("zhangsan");
                p.setAge(12);
                p.function() ;
        }
        }
}你看下能运行不?顺便说下,你发表的代码有很多似乎是语法问题,你看视频的时候,尽量跟着视频上的写法来写,这样写比较规范。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 新人加油

查看全部评分

回复 使用道具 举报
this代表的意思是,谁调用我就代表谁,为什么这里必须加this呢?
因为你写的这几个都是同一个name,虚拟机就会发蒙,不知道这个name
到底是谁的name,如果你觉得这样不好理解,可以吧定义的名字用别的代替而
不用name,多试试你就会慢慢理解了,我开始和你有同感



class Private1
{
  private String name;
  private int age;
        Private()//空构造函数,一般都写上,不写有时候在继承那块会发生错误
        {
        }
  public void setFunction(String name)//可以用set方法对对象进行name设置
   {
        this.name=name;
    System.out.println(name);
   }
  public String getFunction()//获取对象的名字
  {
   return name;
  }
}
class PrivateDemo1
{
  public static void main(String[] args)
  {
   Private1 p=new Private1();
   p.setFunction("张三");//设置名字
   System.out.print(p.name);//对象调用对象属性
   System.out.print(p.getFunction);//对象调用方法
   //以上俩种都可以获取对象的姓名,按你个人喜好,哪一个都可以一般都是使用后者
  }
}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 贴代码最好用那个工具

查看全部评分

回复 使用道具 举报
  1. class PrivateDemo1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Private1 p = new Private1();
  6.                 p.function1("张三");
  7.         }
  8. }
  9. class Private1
  10. {
  11.         private String name;
  12.         private int age;
  13.        
  14.         public void function1(String name)
  15.         {
  16.                 this.name = name;
  17.                 System.out.println(this.name);
  18.         }
  19. }
复制代码
程序直接写成这样就可以的。
this作用:代表本类对象,主要用来区分局部变量与成员变量.

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
若还有问题,继续追问; 没有的话,将帖子分类改成【已解决】哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马