本帖最后由 Mr_Free 于 2013-7-29 04:25 编辑
- package wenti;
- //转型分向上转型 和向下转型;
- //写个例子:
- class wenti5{
- public static void main(String[] args){
- Fu erzi = new Zi();//这是你如果要调用儿子的特有的方法,就必须向下转型
- Zi er =(Zi)erzi;
- er.erziteyou();
- // 至于为什么要向上转型是这样的,一般父类是一些大家共有的方法,现在我想让所有子
- // 类都做同样父类有的方法,而你每次执行的话创建对象,然后用对象一个一个调用写起来有些麻烦,
- // 所以,你可以考虑把父类的方法执行,封装成一个类中的静态方法,在传入参数的时候写你要执行的对象
- // 这样的好处是避免了代码重复。下面我写一个例子
- Fu fuDo = (Fu)er;//向上转型。为了调用function方法
- Fu nver =new daughter();
- function.fufunctionDo(fuDo);//执行父类方法
- function.fufunctionDo(nver);//执行父类方法
- }
-
- }
- class daughter extends Fu{
- public void nverteyou(){
- System.out.println("这方法女儿特有,爹爹没有");
- }
- public void showzi(){
- System.out.print("showzi");
- }
- public void chi(){
- System.out.println("女儿chi");
- }
- public void he(){
- System.out.println("女儿he");
- }
- public void shui(){
- System.out.println("女儿shui");
- }
- }
- class Fu{
- public void chi(){
- System.out.println("chi");
- }
- public void he(){
- System.out.println("he");
- }
- public void shui(){
- System.out.println("shui");
- }
- public void showfu(){
- System.out.print("showfu");
- }
- }
- class Zi extends Fu{
- public void erziteyou(){
- System.out.println("这方法儿子特有,爹爹没有");
- }
- public void showzi(){
- System.out.print("showzi");
- }
- public void chi(){
- System.out.println("zichi");
- }
- public void he(){
- System.out.println("zihe");
- }
- public void shui(){
- System.out.println("zishui");
- }
- }
- class function{
- public static void fufunctionDo(Fu fu){
- fu.chi();
- fu.he();
- fu.shui();
- }
- }
复制代码 |