zoukankan      html  css  js  c++  java
  • 面向对象

    1.重写与重载

      a.子类可以重写(覆盖)继承自父类的方法,即方法名和参数列表与父类的方法相同;子类利用重写修改父类的方法。当子类对象的重写方法被调用时(无论是通过子类的引用调用还是通过父类的引用调用),运行的是子类的重写修改后的版本。

      b.子类可以重写(覆盖)父类的方法。方法的重写要遵循“两同两小一大”规则,“两同”即方法名相同,形参列表相同;“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;“一大”指的是子类方法的访问权限应比父类方法的访问范围更大或相等。 在Java语言中,允许多个方法的名称相同,但参数列表不同,称之为方法的重载。

      c.子类可以重写(覆盖)继承自父类的方法,即方法名和参数列表与父类的方法相同;子类利用重写修改父类的方法。当子类对象的重写方法被调用时(无论是通过子类的引用调用还是通过父类的引用调用),运行的是子类的重写修改后的版本

     2.父类的引用指向子类的对象

    class ClassA {}
        class ClassB extends ClassA {}
            class ClassC extends ClassA {}
        public class Test{
         public static void main(String[] args) {
          ClassA p0 = new ClassA();
          ClassB p1 = new ClassB();
          ClassC p2 = new ClassC();
          ClassA p3 = new ClassB();
          ClassA p4 = new ClassC();
              //<插入代码>
         }
        }
    下列选项中放置在<插入代码>处,使程序编译正确的是:()。
    •  A.p0 = p1;
    •  B.p1 =p2;
    •  C.p2 = p4;
    •  D.p2 = (ClassC)p1;
     

    正确答案:A

    解析:本题考查向上造型。一个类的对象可以向上造型的类型有: a.父类的类型 b.其实现的接口类型 Java编译器根据类型检查调用方法是否匹配。 本题中, A选项,ClassB是ClassA的子类,p0是ClassA的对象,p1是ClassB的对象,p0=p1,符合一个子类的对象可以向上造型为父类的类型,故A选项正确。 B选项,p1是ClassB的对象,p2是ClassC的对象,ClassB和ClassC不存在继承关系,p1=p2;不成立,故选项B不正确。 C选项,p2是ClassC的对象,p4的类型是ClassA,p4指向的实例是ClassC的对象,ClassC继承自ClassA,故p4=p2成立,符合一个子类的对象可以向上造型为父类的类型,但是返回来p2=p4;则不成立。 D选项,p1是ClassB的对象,p2是ClassC的对象,ClassB和ClassC不存在继承关系,故p2 = (ClassC)p1;不成立,D选项不正确。
     
     
     

     

  • 相关阅读:
    合数分解为质数的乘积模板
    P2626 斐波那契数列(升级版)(合数的质数分解, 大数为素数的概率十分小的利用)
    1305 Pairwise Sum and Divide
    1344 走格子 (前缀和)
    1347 旋转字符串
    E
    pek (北大oj)3070
    数学中各种矩阵收集(转至其他博主)
    (数论)逆元的线性算法
    洛谷P2627 修剪草坪 题解 单调队列优化DP
  • 原文地址:https://www.cnblogs.com/chenzhiwei/p/9493807.html
Copyright © 2011-2022 走看看