比如一个Person类
里面声明2个成员变量name,agename和age肯定是要private的,防止别人输入例如小于0的age。如果按照这个方法,我子类Student继承父类,不是又要重新声明name和age,这样的话不是很麻烦吗有没有一个方法,让子类继承父类的name和age变量的同时,又防止别人输入非法的值今天问了下老师,他跟我说用抽象类可以解决我想了一下也不行啊,貌似继承了抽象父类的成员变量,在类的外部还是可以随便访问的啊肯定有解决的方法的。是什么方法啊,有代码例子最好了。
里面声明2个成员变量name,agename和age肯定是要private的,防止别人输入例如小于0的age。如果按照这个方法,我子类Student继承父类,不是又要重新声明name和age,这样的话不是很麻烦吗有没有一个方法,让子类继承父类的name和age变量的同时,又防止别人输入非法的值今天问了下老师,他跟我说用抽象类可以解决我想了一下也不行啊,貌似继承了抽象父类的成员变量,在类的外部还是可以随便访问的啊肯定有解决的方法的。是什么方法啊,有代码例子最好了。
public static void main(String[] args) {
Student s = new Student();
s.setAge(-1);
}
}class Student extends Person {
}class Person {
private String name;
private int age;
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
if (age < 0)
throw new java.lang.IllegalArgumentException("年龄无效");
this.age = age;
}
}
返回结果Exception in thread "main" java.lang.IllegalArgumentException: 年龄无效
at Person.setAge(Test.java:38)
at Test.main(Test.java:12)
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
if(age < 0) {
throw new RuntimeException("Age is less than 0");
}
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}class Student extends Person {
//在这里根本就不用再声明什么age、name啊
//要做什么通过方法操作就行了,还是我不明白你的意思
public String toString() {
return getAge() + getName();
}
}
age和name其实是被继承了
只是不能直接访问而已
要通过方法访问
你问的问题好像大家都没大听明白,重述一下。