• 转型


    父类代码:

     1 package org.hanqi.pn0120;
     2 
     3 public class Son extends Father {
     4     //Object a;  所有类的父类
     5     public Son()
     6     {
     7         //super 表示父类
     8         super("儿子");
     9         System.out.println("子类的构造方法");
    10     }
    11     public void sing()
    12     {
    13         System.out.println("我喜欢唱歌");
    14     }
    15     //覆盖(重写)
    16     public void work()
    17     {
    18         //调用父类方法
    19         //super.work();
    20         //System.out.println("我不喜欢上班,我要去参加海选");
    21         System.out.println("我边上班边练歌");
    22     }
    23     public static Object getData(int i)
    24     {
    25         Object rtn=null;
    26         //获取数据
    27         if(i==1)
    28         {
    29         //1.father
    30         Father f=new Father("向上转型的父类");
    31         //向上转型
    32         rtn=f;
    33         }
    34         else
    35         {
    36         //2.Son
    37         Son s=new Son();
    38         rtn=s;
    39         }
    40         return rtn;
    41     }
    42 }
    View Code

    子类代码:

     1 package org.hanqi.pn0120;
     2 
     3 public class Son extends Father {
     4     //Object a;  所有类的父类
     5     public Son()
     6     {
     7         //super 表示父类
     8         super("儿子");
     9         System.out.println("子类的构造方法");
    10     }
    11     public void sing()
    12     {
    13         System.out.println("我喜欢唱歌");
    14     }
    15     //覆盖(重写)
    16     public void work()
    17     {
    18         //调用父类方法
    19         //super.work();
    20         //System.out.println("我不喜欢上班,我要去参加海选");
    21         System.out.println("我边上班边练歌");
    22     }
    23     public static Object getData(int i)
    24     {
    25         Object rtn=null;
    26         //获取数据
    27         if(i==1)
    28         {
    29         //1.father
    30         Father f=new Father("向上转型的父类");
    31         //向上转型
    32         rtn=f;
    33         }
    34         else
    35         {
    36         //2.Son
    37         Son s=new Son();
    38         rtn=s;
    39         }
    40         return rtn;
    41     }
    42 }
    View Code

    Test类代码:

     1 package org.hanqi.pn0120;
     2 
     3 public class Testjicheng {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7 
     8         Father f=new Father("父亲");
     9         //f.setName("父亲");
    10         f.setAge(50);
    11         System.out.println("名字是:"+f.getName()+" 年龄是:"+f.getAge());
    12         f.work();
    13         System.out.println();
    14         Son s=new Son();
    15         //s.setName("儿子");
    16         s.setAge(20);
    17         System.out.println("名字是:"+s.getName()+" 年龄是:"+s.getAge());
    18         s.work();
    19         s.sing();
    20         System.out.println();
    21         //转型
    22         //向上转型   由子类转向父类     即用父类对象实现子类方法
    23         Father f1=new Son();
    24         System.out.println("名字是"+s.getName());
    25         f1.work();//如果被子类重写了,就会调用子类的方法
    26         System.out.println("向下转型");
    27         //向下转型   由父类转向子类     即将父类方法转换成子类对象并实现子类方法,必须先做向上转型
    28         Son s1=(Son)f1;
    29         s1.work();
    30         System.out.println();
    31         //向上转型常用方式先向上转型Object再向下转型
    32         Father f2=(Father)Son.getData(1);//想调用子类方法就调用子类想调用父类方法就调用父类
    33         f2.work();
    34         
    35         
    36     }
    37 
    38 }
    View Code

  • 相关阅读:
    关于LEA指令(单周期就可以做简单的算术计算)
    说说字符集和编码(非常形象,非常有意思)
    类依赖项的不透明性和透明性
    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(6)-Unity 2.x依赖注入by运行时注入[附源码]
    大端和小端
    Google C++测试框架系列:入门
    随机森林中的数学基础之大数定律
    K-means Algorithm
    JavaScript插件——按钮
    分布式系统设计(8)
  • 原文地址:https://www.cnblogs.com/beens/p/5256692.html
Copyright © 2020-2023  润新知