父类:
public class Parent {
public String name;
private String pass;
public void say1(AA aa){
System.out.println("parent say1");
}
@SuppressWarnings("unused")
private void eat(){
System.out.println("parent eat");
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
子类:
public class Child extends Parent{
public static void main(String[] args) {
AA a = new AA();
/**
* 向上转型:程序运行调用某一方法时,先查看Parent类是否有调用的方法,
* 若有则就去调用子类中的方法,若父类没有此方法,则编译错误。
*
*/
Parent p = new Child();
p.say1(a);
/**
* 向下转型,编译和运行皆不会出错,这里的向下转型是安全的。
*/
Child child = (Child) p;
child.say1(a);
child.say2(a);
/**
* 向下转型,编译无错,运行时报错: java.lang.ClassCastException
* 不安全的向下转型。
*/
//Parent p2 = new Parent();
//Child c2 = (Child) p2;
//c2.say1(a);
}
public void say1(AA aa){
System.out.println("Child say1");
}
public void say2(AA aa){
System.out.println("Child say2");
}
}
class AA {
public void sys() {
System.out.println("A is");
}
}
class BB extends AA{
public void sys() {
System.out.println("B is");
}
}