黑马程序员技术交流社区
标题:
求助
[打印本页]
作者:
HM何伟
时间:
2013-3-23 20:38
标题:
求助
本帖最后由 HM何伟 于 2013-4-2 23:59 编辑
class Private1
{
private String name;
private int age;
public void function()
{
name=this.name;
System.out.println(name);
}
public String function1(String name)
{
this.name=name;
}
}
class PrivateDemo1
{
public static void main(String[] args)
{
Private1 p=new Private1();
p.function1("张三");
}
}
复制代码
这段代码为什么不能运行啊,还有就this只能在构造函数中使用么?
作者:
胡志超
时间:
2013-3-23 21:18
本帖最后由 胡志超 于 2013-3-23 21:24 编辑
public void function()
{
name=this.name;
System.out.println(name);
}
构造函数只是初始化字段,不是的,this也可以用在一般方法中,
你07行的name是什么???没有定义啊,错了
作者:
yang422913837
时间:
2013-3-23 21:21
你写的这段代码到处都是错误! 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());
}
}
作者:
HM何伟
时间:
2013-3-23 21:35
我就是想把"张三"传到founction1这个函数中,然后将"张三"通过founction这个函数把name打出来.提前是 private String name;
private int age不变动,怎样才能实现啊.能否写一段代码正确的代码,让我参阅一下
作者:
pthuakai
时间:
2013-4-2 15:40
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() ;
}
}
}你看下能运行不?顺便说下,你发表的代码有很多似乎是语法问题,你看视频的时候,尽量跟着视频上的写法来写,这样写比较规范。
作者:
庞立森
时间:
2013-4-2 18:09
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);//对象调用方法
//以上俩种都可以获取对象的姓名,按你个人喜好,哪一个都可以一般都是使用后者
}
}
作者:
范鹏飞
时间:
2013-4-2 19:31
class PrivateDemo1
{
public static void main(String[] args)
{
Private1 p = new Private1();
p.function1("张三");
}
}
class Private1
{
private String name;
private int age;
public void function1(String name)
{
this.name = name;
System.out.println(this.name);
}
}
复制代码
程序直接写成这样就可以的。
this作用:代表本类对象,主要用来区分局部变量与成员变量.
作者:
陈丽莉
时间:
2013-4-2 22:06
若还有问题,继续追问; 没有的话,将帖子分类改成【已解决】哦~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2