• CS61b lab5


    part1:父类reference可以指向子类的Object,但子类reference不能指向父类Object,因为子类可能存在更多的method和filed。

    part2:(a)可以(b,c)不行 (d)可以

    interface和superclass的method名称相同,若返回类型和接受参数类型均相同,则不产生歧义可以通过编译,否则则不能通过编译。

    part3:

    接口和父类中的constant会产生歧义,在子类中使用可标明class类型:

    package lab;
    class a{
        public static final int A=1;
    }
    interface b{
        public static final int A=2;
    }
    public class lab5 extends a implements b{
        public static void main(String[]args){
            System.out.println(a.A);
            System.out.println(b.A);
        }
    }

    part4:

    (a):转型后运行结果依然为子类的方法,因为java中的多态优先采用子类方法。

    (b):无法通过编译,不能将子类reference指向父类的Object。

    (c):可在子类中添加super方法调用父类方法,代码如下:

    class superclass{
        public void print(){
            System.out.println("super");
        }
    }
    class subclass extends superclass{
        public void print(){
            System.out.println("sub");
        }
        public void superprint(){
            super.print();
        }
    }
    public class Lab52 {
    public static void main(String[]args){
        subclass sub=new subclass();
        ((superclass)sub).print();
        superclass s=new superclass();
        //((subclass)s).print();
        sub.superprint();
        
        
    }
    }
  • 相关阅读:
    1988-B. 有序集合
    1987-A. 集训队选拔
    1964-NP
    1963-带妹子去看电影
    1962-Fibonacci
    1961-计算机基础知识大赛 2 (new)
    TCP/IP协议详解 卷一:协议 18章、TCP连接的建立与终止
    3、剑指offer--从尾到头打印链表
    2、剑指offer--替换空格
    1、剑指offer--二维数组中查找
  • 原文地址:https://www.cnblogs.com/lyz1995/p/7157620.html
Copyright © 2020-2023  润新知