package org.newer.ThinkInJava;
class JC{
private int id;
private String jcName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getJcName() {
return jcName;
}
public void setJcName(String jcName) {
this.jcName = jcName;
}
public void show(){System.out.println("展示方法");};
public void method(){System.out.println("方法的父类");};
}
class jcFixItem extends jc{
public void method(){System.out.println("方法");};
public void show(){System.out.println("展示方法的子类");};
}
public class ThinkInJava_caseFirst {
/**
* 父类和子类指向问题
*/
public static void main(String[] args){
/**使用父类对象指向子类对象,调用了子类的方法,因为父类中存在show,method方法, 所以,子类中能够覆盖父类的show方法*/
jc jcCls = new jcFixItem();
jcCls.show();
jcCls.method();
//jcCls.method(); 无法编译,如果父类中不存在该方法,所以无法覆盖。
/**jcClsTwo对象的引用指向jc对象 ,调用父类方法中自身的方法*/
jc jcClsTwo = new jc();
jcClsTwo.show();
jcClsTwo.method();
/**父类调用子类的方法无法调用*/
//jcClsTwo.method();无法编译
/**继承用java的面向对象去思考*/
/**父类无法向下变成子类<网上有两种说法:
* 1. 子类无法向下转型 ;
* 2. 子类是父类,父类或许也可以是子类
* 但是我实际操作,无法向下变成子类,如有好方法,请各位提点下。
* >*/
//转型失败,java.lang.ClassCastException,转型失败<编译无错>
//jcFixItem jcFixCls = (jcFixItem) new jc();
//jcFixCls.show();
//jcFixCls.method();
/**子类可以调用父类的方法,使用子类对象指向子类对象;如果子类中存在方法,则调用子类中存在的方法;
* 如果子类中不存在该方法,则调用父类中存在的该方法;如果子类中不存在,父类中不存在,更加无法编译。*/
jcFixItem jcFixClsTwo = new jcFixItem();
jcFixClsTwo.show();
jcFixClsTwo.method();
}
}
|
|