面向对象

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选项不正确。
 
 
 

 

posted @ 2018-08-17 16:00  那年丶青春无痕  阅读(109)  评论(0编辑  收藏  举报