学习Java类与对象时遇见的基础问题
public class Girl {
private String name;
private int age;
private boolean flag;
public Girl() {}
public Girl(String name, int age, boolean flag) {
this.name = name;
this.age = age;
this.flag = flag;
}
public void show() {
System.out.println("我是" + name + ",今年" + age +"岁了,目前" + (flag ? "入住" : "没入住"));
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age > 0 && age <= 18) {
this.age = age;
}
else {
System.out.println("年龄不合理");
}
}
public boolean getFlag() {
return flag;
}
public void setFlag() {
this.flag = flag;
}
}
public class TestGirl{
public static void main(String[] args) {
Girl g1 = new Girl("小红", -18, true);
g1.setAge(19);
}
}
在学习Java课程的类与对象时,我们初学者常会遇到这种问题,我明明和书本上的代码一模一样,为什么运行编译的时候会报错呢?以本代码为例,我们期待的理想运行结果应该为:“年龄不合理”,可是为什么会报错呢?
其实问题出在了:一个文件中有多个类,只有与文件名一致的类名,才能声明为:public;内部类不能声明为:public;一个文件只能有一个public类。
ok,那我们应该怎么更改代码呢?其实很简单只需要将Girl前的public去掉即可。
class Girl {
private String name;
private int age;
private boolean flag;
Girl() {}
Girl(String name, int age, boolean flag) {
this.name = name;
this.age = age;
this.flag = flag;
}
public void show() {
System.out.println("我是" + name + ",今年" + age +"岁了,目前" + (flag ? "入住" : "没入住"));
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age > 0 && age <= 18) {
this.age = age;
}
else {
System.out.println("年龄不合理");
}
}
public boolean getFlag() {
return flag;
}
public void setFlag() {
this.flag = flag;
}
}
public class TestGirl{
public static void main(String[] args) {
Girl g1 = new Girl("小红", -18, true);
g1.setAge(19);
}
}