zoukankan      html  css  js  c++  java
  • 一个继承的小问题

    今天看到了一道关于Java继承的题目:

      问如下代码,输出的结果是Father还是test。

    class Father {
        private String name = "Father";
        
        public void getName(){
            System.out.println(name);
        }
    }
    
    class Test extends Father{
        private String name = "test";
    
        public static void main(String[] args){
            Test t = new Test();
            t.getName();
        }
    }

      这题的答案是Father,因为test类没有重写getName方法的话,使用的是父类的方法,打印的是父类的name。

      PS:如果getName方法的内容是 System.out.println(this.getClass()); 的话,t.getName得到的是test的class。

      因为验证这题的时候最开始使用的kotlin

    open class Father{
        private val name = "father"
    
    //    public fun getName():String{
    //        return name
    //    }
    }
    
    class test:Father(){
        private val name = "test"
    }

      上面的代码把注释去掉的话,test中name会报错,因为父类的方法已经使用了父类的name,子类声明重名的变量为了不产生歧义会编译时报错。所以只要改名。

      所以这个题目在kotlin中是不成立的,因为编译压根不通过。也防止在写代码的时候产生这个错误。

  • 相关阅读:
    实现自动进行金额汇总
    实现模糊查询
    手电筒查询
    lov的建立
    日历 的建立
    快速创建Folder
    TAB页制作
    堆叠画布
    弹性域的开发
    注销记录的实现
  • 原文地址:https://www.cnblogs.com/liumaowu/p/9476563.html
Copyright © 2011-2022 走看看