刚接触C#编程,我也是被override与new搞得晕头转向.于是花了点时间翻资料,看博客,终于算小有领悟,把学习笔记记录于此. 首先声明一个父类Animal类,与继承Animal的两个子类Dog类与Cat类.父类Animal中有一个Say方法,而子类Dog与Cat分别override(重写)与new(覆盖)了Say方法. 让我们通过实例来看一下这两者有什么相同与不同之处. public class Animal { public virtual void Say() { Console.Wri…
最近学习c#,昨晚看书看到多态.由于个人本身是从事java开发,于是拿来做对比便是自然的. 进入主题吧. c#中,子类要重写基类的方法,必须要基类声明中带有virtual关键字方法或者带有abstract关键字的抽象方法,然后子类中重写该方法时使用override关键字. 例如: class A { private String name; public String Name { get { return name; } set { name = value; } } public A(Str…
Scala中的override override是覆盖的意思,在很多语言中都有,在scala中,override是非常常见的,在类继承方面,它和java不一样,不是可写可不写的了,而是必须写的.如果不写而覆盖了对应的属性或者方法的话,编译器就会报错了.今天把scala中的override的各种地方都整理了一遍,以方便以后翻阅. 基础用法 /* 基本的override特性 */ class A { val nameVal = "A" var nameVar = "A"…
一直觉得对c#面向对象这块已经掌握的很好了,因为正常情况下字段一般我们设计成私有的,今天突然想到一个实验,如下有两个很简单的类: public class Farther { ; public virtual int A { get { return a; } } } public class Son : Farther { ; public override int A { get { return a; } } } 注意字段是public的 那么对于下面的输出你能写出正确答案吗? Son o…
方法的重写 1.在子类中可以根据需要对从基类中继承来的方法进行重写. 2.方法重写必须要和被重写方法具有相同方法名称.参数列表和返回类型. 3.重写方法不能使用比被重写方法更严格的访问权限 4.注意与重载区别!!! 重载:参数类型 参数个数不同! class Person1 { public String name; public int age; public String getName() { return name; } public void setName(String name)…
这篇文章讨论了Java面向对象概念中一个基本的概念–Field Hiding(隐藏成员变量) 在讨论这个问题之前,我们看一段特别特别简单的代码,请问一下方法的数据结果是什么? public class FieldOverriding { public static void main(String[] args) { Sub c1 = new Sub(); System.out.println(" c1.s : " + c1.s); System.out.println("…