求助Java语法

XuanrenLu 2014-02-24 11:16:40

public class programe {

public static class Student // 去掉public static ,下面的语句:
//Student stu = new Student("lxr","10060",'b',20); 出现语法错误,求解
{
static int studentSum; //还有就是这里有出现语法错
String name;
String id;
char sex;
int age;

Student ()
{
name = "null";
id = "null" ;
sex = 'n';
age = 0;

}
Student (String _name,String _id,char _sex,int _age)
{
name = _name;
id = _id ;
sex = _sex;
age = _age;
}
public void setName(String _name){ name = _name;}
public void setId(String _id){ id = _id;}
public void setSex( char _sex){ sex = _sex;}
public void setAge( int _age){ age = _age;}
public static void setStudentSum(int sum)
{
studentSum = sum;
System.out.print("student sum = "+studentSum);
}
public void showStudentInfo()
{
System.out.println("Name : "+ this.name +"\n" + "ID : "+this.id);
System.out.println("Sex :"+this.sex +"\n"+ "Age :"+this.age);
};

}

public static void main(String[] args) {

Student stu = new Student("lxr","10060",'b',20);
stu.showStudentInfo();
stu.setAge(21);
stu.showStudentInfo();
Student.setStudentSum(10);
}

}
...全文
351 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
油头小兄妹 2014-02-25
  • 打赏
  • 举报
回复
为什么要写成内部类呢?!
XuanrenLu 2014-02-25
  • 打赏
  • 举报
回复
引用 6 楼 lib739449500 的回复:
内部类和静态内部类 和普通的类一样,内部类也可以有静态的。不过和非静态内部类相比,区别就在于静态内部类没有了指向外部的引用。这实际上和C++中的嵌套类很相像了,Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用这一点上,当然从设计的角度以及以它一些细节来讲还有区别。 除此之外,在任何非静态内部类中,都不能有静态数据,静态方法或者又一个静态内部类(内部类的嵌套可以不止一层)。不过静态内部类中却可以拥有这一切。
上面的类 program是主类,student是一个静态内部类,所以它可以直接实例化。既然是这样,如果我要想直接实例化,内部类就必须是静态的吗?如果上面的student不是静态类,有没有办法将它实例化?
a790851624 2014-02-25
  • 打赏
  • 举报
回复
实例化方法一:

    public Student getNewStu(String _name,String _id,char _sex,int _age){
        return new Student(_name,_id,_sex,_age);
    }
    public static void main(String[] args) {
        programe p = new programe();
        p.Student stu = new p.getNewStu("lxr","10060",'b',20);
        stu.showStudentInfo();
        stu.setAge(21);
        stu.showStudentInfo();
        Student.setStudentSum(10);
    }
方法二,将Student类的定义放在programe类外边来。


public class programe {
	
	public static void main(String[] args) {

		Student stu = new Student("lxr","10060",'b',20);
		stu.showStudentInfo();
		stu.setAge(21);
		stu.showStudentInfo();
		Student.setStudentSum(10);
	}
}
class Student {
	static int studentSum;
	String name;
	String id;
	char sex;
	int age;

	Student() {
		name = "null";
		id = "null";
		sex = 'n';
		age = 0;

	}

	Student(String _name, String _id, char _sex, int _age) {
		name = _name;
		id = _id;
		sex = _sex;
		age = _age;
	}

	public void setName(String _name) {
		name = _name;
	}

	public void setId(String _id) {
		id = _id;
	}

	public void setSex(char _sex) {
		sex = _sex;
	}

	public void setAge(int _age) {
		age = _age;
	}

	public static void setStudentSum(int sum) {
		studentSum = sum;
		System.out.print("student sum = " + studentSum);
	}

	public void showStudentInfo() {
		System.out.println("Name : " + this.name + "\n" + "ID : " + this.id);
		System.out.println("Sex :" + this.sex + "\n" + "Age :" + this.age);
	};

}

XuanrenLu 2014-02-24
  • 打赏
  • 举报
回复
引用 1 楼 Inhibitory 的回复:
内部类与静态内部类的区别,网上很多参考资料讲得很全。
刚学几天Java。。。这风格没变。。被你发现了。。厉害啊
xlhb 2014-02-24
  • 打赏
  • 举报
回复
内部类和静态内部类 和普通的类一样,内部类也可以有静态的。不过和非静态内部类相比,区别就在于静态内部类没有了指向外部的引用。这实际上和C++中的嵌套类很相像了,Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用这一点上,当然从设计的角度以及以它一些细节来讲还有区别。 除此之外,在任何非静态内部类中,都不能有静态数据,静态方法或者又一个静态内部类(内部类的嵌套可以不止一层)。不过静态内部类中却可以拥有这一切。
sunbo624 2014-02-24
  • 打赏
  • 举报
回复
static的内部类 实例化不依赖外部类 普通内部类实例化依赖外部类的实例
  • 打赏
  • 举报
回复
参照内部类和静态内部类
枫醉秋 2014-02-24
  • 打赏
  • 举报
回复
典型的内部类和静态内部类的区别,百度吧,这方面介绍的多的很
  • 打赏
  • 举报
回复
一股浓浓的C/C++编码风格味道。
Inhibitory 2014-02-24
  • 打赏
  • 举报
回复
内部类与静态内部类的区别,网上很多参考资料讲得很全。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧