class C_1{ // 定义接口C_1 public void fun1(){ //定义fun1()方法 System.out.println("C_1--->public void fun1"); } public void fun2(){ //定义fun2()方法 this.fun1(); } }
class D_1 extends C_1{ //子类D_1继承父类C_1 public void fun1(){ System.out.println("D_1--->public void fun1"); //覆写父类中的fun1()方法 } public void fun3(){ System.out.println("D_1--->public void fun3"); //子类自己定义方法 } }
// 对象的多态性,对象向上转型 public class ploy_up_demo {
public static void main(String[] args) { // TODO 自动生成的方法存根 D_1 b = new D_1(); //定义子类的实例化对象 C_1 a = b; //声明一个父类,发生向上转型的关系,子类赋值给父类 a.fun1(); //此方法被子类覆写过,虽然a是父类,但是调用的是子类的fun1()方法 }
class C_1{ // 定义接口C_1 public void fun1(){ //定义fun1()方法 System.out.println("C_1--->public void fun1"); } public void fun2(){ //定义fun2()方法 this.fun1(); } }
class D_1 extends C_1{ //子类D_1继承父类C_1 public void fun1(){ System.out.println("D_1--->public void fun1"); //覆写父类中的fun1()方法 } public void fun3(){ System.out.println("D_1--->public void fun3"); //子类自己定义方法 } }
// 对象的多态性,对象向上转型 public class ploy_up_demo {
public static void main(String[] args) { // TODO 自动生成的方法存根 // D_1 b = new D_1(); //定义子类的实例化对象 // C_1 a = b; //声明一个父类,发生向上转型的关系,子类赋值给父类 // a.fun1(); //此方法被子类覆写过,虽然a是父类,但是调用的是子类的fun1()方法 C_1 c = new D_1(); //声明一个父类,发生了向上转型,子类赋值给父类 D_1 d = (D_1)c; //声明的父类强制转换成子类,发生了向下转型关系 d.fun1(); d.fun2(); d.fun3(); }