zoukankan      html  css  js  c++  java
  • C#和Java在重写上的区别

    C#
         class
    A { public string Get1() { return "A1"; } public virtual string Get2() { return "A2"; } } class B:A { public string Get1() //此处会出现提示:隐藏继承的成员“Program.A.Get1()”。如果是有意隐藏,请使用关键字 new { return "B1"; } public override string Get2() { return "B2"; } } static void Main(string[] args) { A a = new B(); Console.WriteLine(a.Get1()); //结果为A1,原因Get1()方法之间并没有形成重写,调用A的Get1()方法 Console.WriteLine(a.Get2()); //结果为B2,原因Get2()方法之间形成了重写,会调用B的方法 }

    C#此段代码是能正常编译运行的,但是会出现警告提示。

    另C#所有子父类方法的重写,必须在父方法上使用abstract,virtual等关键字修饰,且在子方法使用override关键字修饰。否则编译器则会视为不同的方法。

    Java
        public class  A
        {
            public long Get()
            {
                return 4;
            }
        }
    
        public  class B extends A
        {
            public int Get()    //此处会出现错误提示,attempting to use incompatible return type,即“尝试使用不相容的返回类型”,可以看出对于同名同参方法,不管返回类型是否相同,编译器都会认为子类在尝试复写父类方法,这时会要求返回类型必须相同
            {
                return 5;
            }
        }

    此段java代码编译不会通过

  • 相关阅读:
    mongodb的sql日志
    mysql – 在WHERE子句中使用substr的SELECT语句
    MySQL视图
    Linux简单查找log
    转 信号量与PV操作
    二进制小数及 IEEE 浮点表示
    转 :原码,反码,补码
    转:C# Delegate委托 1
    C#中Invoke的用法2
    C#中Invoke的用法1
  • 原文地址:https://www.cnblogs.com/zhoushiya/p/5603103.html
Copyright © 2011-2022 走看看