public protected private default
修饰符 | 类内部 | 同一个包内 | 子类 | 任何地方 |
---|---|---|---|---|
private | yes | – | – | – |
default | yes | yes | – | – |
protected | yes | yes | yes | – |
public | yes | yes | yes | yes |
public类可以在任意地方被访问
default类只可以被同一个包内部的类访问
对于class的权限修饰只可以用public和default
重写
重写方法必须和被重写方法具有相同方法名称,参数列表和返回类型。
重写方法不能使用比被重写方法更严格的访问权限。
class Person{
private String name;
private int age;
public void setName(String name) {this.name = name;}
public void setAge(int age) { this.age = age;}
public String getName() {return name;}
public int getAge() {return age;}
}
class Student1 extends Person{
private String school;
public void setSchool(String school) {this.school = school;}
public String getSchool() {return school;}
public String getInfo() {
return "Name:" + getName() + "¥nage" + getAge() + "¥nschool" + getSchool();
}//重写是最好直接复制父类的方法,以防止写错
}
public class TestOverWrite {
public static void main(String a[]) {
Student1 student = new Student1();
Person person = new Person();
person.setName("none");
person.setAge(100);
student.setName("John");
student.setAge(10);
}
}
super
public class TestInherit {
public static void main (String arg[]) {
ChildClass cc = new ChildClass();
cc.f();
}
}
class FatherClass {
public int value;
public void f() {
value = 100;
System.out.println("FatherClass.value = " + value);
}
}
class ChildClass extends FatherClass {
public int value;
public void f() {
super.f();
value = 200;
System.out.println("ChildClass.value = " + value);
System.out.println(value);
System.out.println(super.value);
}
}
结果如下
FatherClass.value = 100
ChildClass.value = 200
200
100