1.protected关键字:被protected修饰的成员对于本包和其子类可见。
public static void main(String[] args) { Person01 p = new Person01(); System.out.println(p.toString()); Student01 s = new Student01(); System.out.println(s.toString()); } } class Person01 { protected int age; @Override public String toString() { return "Person01 age=" + age; } } class Student01 extends Person01 { protected String name; @Override public String toString() { return "Student01 name=" + name; } }
2.向上转型:父类引用指向子类对象,而子类引用不能指向父类对象。向上转型不能使用子类特有的属性和方法,只能引用父类的属性和方法,子类可以重写父类的方法。
public static void main(String[] args) { Animal02 a = new Pig(); a.eat(); } } class Animal02 { public void eat() { System.out.println("吃"); } } class Pig extends Animal02 { @Override public void eat() { System.out.println("吃。。。"); } public void sleep() { System.out.println("睡"); } }
3.final关键字:修饰的类叫最终类,该类不能被继承。修饰方法时改方法为最终方法,无法被子类重写。修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。
修饰变量:
public static void main(String[] args) { StringBuffer s = new StringBuffer("hello"); final StringBuffer s1 = s; System.out.println(s1); s.append("world"); System.out.println(s1); }
修饰类和方法:
final class Person02 { private int age; public final int getAge() { return age; } } class Man extends Person02 {//编译不通过,final修饰的类不能被继承 @Override public int getAge() {//编译不通过,final修饰方法无法被子类重写 return super.getAge(); } }