黑马程序员技术交流社区
标题:
关于内部类调用外部类属性及方法的一点问题
[打印本页]
作者:
王桂丽
时间:
2012-8-28 16:06
标题:
关于内部类调用外部类属性及方法的一点问题
/*
需求:定义一个内部类,一个外部类,用内部类调用外部类的方法,以及修改外部类的属性
*/
class Person
{
private String name;
private int age;
private void play()
{
System.out.println("wan");
}
class Student
{
public static void setName(name)
{
this.name=name;
}
public static String getName()
{
return name;
}
public static void setAge(age)
{
this.age=age;
}
public static int getAge()
{
return age;
}
play();
}
public static void main(String[] args)
{
Student s=new Student();
s.setName("zhangsan");
s.getName();
s.setAge(18);
s.getAge();
s.play;
//System.out.println("Hello World!");
}
}
未命名.jpg
(21.84 KB, 下载次数: 83)
下载附件
2012-8-28 16:06 上传
作者:
朱烈葵
时间:
2012-8-28 16:15
我说姑娘,这题目好像见过了 哈哈
作者:
广驰
时间:
2012-8-28 16:29
本帖最后由 应广驰 于 2012-8-28 16:49 编辑
因为getName和 setName两个方法是静态的,不能对非静态字段 name 进行静态引用
而且方法getName和 setName不能声明为“静态”;只能在静态类型或顶级类型中才能声明静态方法
而且你定义方法时也没有声明参数的类型
你在内部类中定义的play()方法没有返回值类型,或者你不是定义方法而是直接使用外部类的引用方法,引用方法也错了
还有主函数中内部类对象建立方法也不对,没有外部类Person的实例
最后你的getName()和getAge()方法没有输出语句,直接调用放在那里根本毫无意义
我把你的代码改了一下,你看看吧
class Person
{
private String name;
private int age;
private void play()
{
System.out.println("wan");
}
class Student
{
public void setName(String name)
{
Person.this.name=name;
}
public String getName()
{
return name;
}
public void setAge(int age)
{
Person.this.age=age;
}
public int getAge()
{
return age;
}
public void play()
{
Person.this.play();
}
}
public static void main(String[] args)
{
Student s=new Person().new Student();
s.setName("zhangsan");
s.setAge(18);
System.out.println("姓名"+s.getName()+"-----年龄"+s.getAge());
s.play();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2