• 学习向上转型和向下转型的一个好例子


    向上转型: 父亲 f=new 孩子();

    向下转型:

    父亲 f=new 孩子2();

    孩子2 c=(孩子2)f;//孩子 c=f;这样是错误的,将父类对象直接赋给子类是错误的,因为父类对象也不一定是子类的实例。

    一个四边形不一定就是平行四边形也许是梯形,越是具体的对象具有的特性就越多,越抽象的对象具有的特性越少,在向下转型操作时,将特性范围小的对象转换为特性范围大的对象时肯定会出问题,所以需要告知编译器这个对象就是平行四边形。

    将父类对象强制转换为某个子类对象,这种方式称为显式类型转换。向下转型时必须使用。

     1 class Person{
     2   private String name;
     3   private int money;
     4   public Person(){
     5     name="Tom";
     6     money=1000;
     7   }
     8   public Person(String Name,int Money){
     9     name=Name;
    10     money=Money;
    11   }
    12   public void feed(Pet pet){
    13     pet.eat();
    14     if(pet instanceof Dog){
    15       money-=10;
    16     }else if(pet instanceof Penguin){
    17       money-=20;
    18     }
    19     System.out.println("the master's remanent money is "+money);
    20   }
    21 }
    22 class Pet{
    23   protected String name;
    24   protected int health;
    25   public Pet(){
    26     name="pp";
    27     health=100;
    28   }
    29   public void eat(){
    30     System.out.println("pet eat");
    31   }
    32 }
    33 class Dog extends Pet{
    34   public void eat(){
    35     health+=10;
    36     System.out.println("dog eat");
    37   }
    38 }
    39 class Penguin extends Pet{
    40   public void eat(){
    41     health+=20;
    42     System.out.println("penguin eat");
    43   }
    44 }
    45 public class HelloWorld{
    46   public static void main(String args[]){
    47     Person LiMing=new Person("LiMing",2000);
    48     Dog d=new Dog();
    49     Penguin p=new Penguin();
    50     LiMing.feed(d);
    51     LiMing.feed(p);
    52   }
    53 }

    这个人喂食动物的例子还可以说明一下下

    结果是

  • 相关阅读:
    “==”和equals方法的区别
    一个睡五分钟等于六个钟头的方法
    依赖、关联、聚合、组合
    关于AOP /IOC / DI
    Java中equals方法比较的是什么?
    JAVA 程序题
    jQuery EasyUI 笔记 DataGrid
    C#利用QrCode.Net生成二维码(Qr码)
    由【酷狗音乐】所联想到的C/S界面设计
    VS2010中CodeSnippet【代码段】应用与创建
  • 原文地址:https://www.cnblogs.com/carazk/p/6165349.html
Copyright © 2020-2023  润新知