zoukankan      html  css  js  c++  java
  • 继承与多态

    1.

     

    代码:

    public class Test
    
    {
    
        public static void main(String args[])
    
        {
    
             C a=new C();
    
             a.display();
    
        }
    
    }
    
    class A
    
    {
    
    public void display()
    
    {
    
    System.out.println("hello");
    
    }
    
    }
    
    class C extends A
    
    {
    
     
    
    public void display()
    
    {
    
    System.out.println("word");
    
    super.display();
    
    }
    
    }
    
     
    

      

    2.

    .

    判断:

    第二个运行错。

    第四个编译错误。

    结果:

    第二、四个编译错误。

    第五个运行错误。

    原因:

            m=d;     //编译正确,因为子类对象可以直接赋给基类变量。

          d=m;     //编译错误,基类对象要赋给子类对象变量,必须执行类型转换(子类对象变量=(子类名)基类对象名;)

          d=(Dog)m;   //编译正确,基类对象要赋给子类对象变量,必须执行类型转换

          d=c;      //编译错误,不同子类之间不能复制

          c=(Cat)m;   //运行错误,m已经转换成Dog, Dog和Cat子类之间不能转换

     

    3.

     

    1.运行结果:

     

    2.原因:

    父类对象可以访问子类的成员,当然只限于”覆盖”发生时,调用的时候,对象是子类的,就调用子类的方法,对象是父类的,就调用父类的方法。当然还有如下特性:

    1.当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。这个特性实际上就是面向对象“多态”特性的具体表现。

    2.如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。如果子类方法确实想访问父类中被隐藏的同名字段,可以用super关键字来访问它。

    3.如果子类被当作父类使用,则通过子类访问的字段是父类的.

    3.修改代码并测试:

     

    则结果为:

     

    说明新加的后边的输出结果是调用的子类的方法。

  • 相关阅读:
    基贝叶斯后验概率的拼写检查器实现 python
    Hadoop The Definitive Guide 2nd Edition 笔记
    DGV删除当前选中行
    DGV设置单元不可编辑
    DGV获取当前选中单元格
    HDU2112_HDU Today_有地名的最短路_map+SPFA
    HDU1026_优先队列+广搜+打印路径
    HDU2757_Ocean Currents_优先队列+广搜_入门题_十四周模拟赛
    自己写的SPFA模板(可打印路径)
    HDU2782_暴力深搜_第十四周模拟赛
  • 原文地址:https://www.cnblogs.com/ssyh/p/7811730.html
Copyright © 2011-2022 走看看