类的继承 注意点

如果子类想要重写父类的方法 使用virtual方法 并且子类要用override  如果子类还想使用父类的方法 子类中使用base方法  如果子类不需要调用父类则用abstract抽象方法 里面可以是抽象方法也可以是非抽象方法 但是如果里面有抽象方法的类那它必须是抽象类 如果不需要用到父类中的方法 则父类用override方法  子类中可以用base方法调用父类中的方法 也可以用this调用 区别:一个调用的是父类的方法,一个调用的是子类自己的方法  如果父类选择的是abstract抽象方法 则子类同方法必须重写
如果是virtual虚方法 则子类中同方法未必需要重写  抽象类中可以没有任何抽象成员  抽象类不能被new 实例化 如果父类是抽象类 子类也是抽象类 则子类不一定需要重写抽象方法 子类能重写父类abstract和virtual方法 孙子类还可以重写override类重写 sealed类不能被继承  如果父类是virtual虚方法 则必须要有实现 哪怕就是空的{}方法,以便子类重写 但如果父类是abstract抽象方法 则未必需要方法的实现 可以没有空括号

时间: 2024-10-23 04:34:39

类的继承 注意点的相关文章

类的继承(Inheritance)

vb.net支持类的继承,允许用户定义一个类,作为其他类继承的依据,继承类能够继承.扩充基本类的属性和方法,继承类也可以重载基本类的一些方法,所有在Vb.net中建立的类缺省的属性都是可继承的.因为窗体现在看成了一个类,所以在vb.net中用户可以根据现有的窗体继承出一个新的窗体. 继承的一个目的就是使代码可以重用.有两种方法可以提高代码的重用率,合成(composition)和继承(Inheritance),一直以来,Visual Basic都支持合成这种方法来达到代码的重用,用户可以建立和重

C++类的继承与多重继承的访问控制

在前面的练习中我们一直在使用public的继承方式,即共有继承方式,对于protected和private继承方式,即保护继承与私有继承方式我们并没有讨论. 对于单个类来说,讨论保护继承与私有继承的区别意义是不大的,他们的区别只在多级继承的情况中体现. 在这里我声明一下,对于此章节的内容不太适合用过多的文字进行描述,主要还是看例子,通过例子熟悉之间的关系,过多的文字描述会模糊读者思路. 例程如下(重要部分都做了详细说明): //程序作者:管宁//站点:www.cndev-lab.com//所有稿

JavaScript设计模式学习之“类式继承”

 这篇文章主要介绍了JavaScript设计模式学习之"类式继承",本文直接用代码实例讲解类式继承的实现方法,需要的朋友可以参考下     在做一件事情之前,首先要清楚做这件事情的好处有什么,相信不会有哪个人愿意无缘无故的去做事情.一般说来,我们在设计类的时候,实际上就是希望能减少重复性的代码,使用继承可以完美的做到这一点,借助继承机制,你可以在现有类的基础上再次进行设计并且充分利用它们已经具备的各种方法,而对设计的修改也更为轻松.废话不多说了,举例说明: 代码如下: function

对象-oc 类的继承的实质,以及是怎样调用方法 和函数的

问题描述 oc 类的继承的实质,以及是怎样调用方法 和函数的 父类里声明的属性,会生成默认生成一个私有的成员变量.即不能被子类访问,那么子类通过继承得到了父类的属性,只能通过setter 和 getter 方法区访问父类的私有变量,那么这个私有变量不属于子类,那么在实例化这个子类的时候就没有这个私有变量,那么通过继承过来的setter 和getter方法访问的是什么,私有变量根本就没有生成啊! 同理在使用{}声明的私有变量同样可以在提供外部接口让外部访问,但是当子类继承后也可以通过生成实例对象,

obj-c编程04:类的继承

    这第4篇内容比较少,主要说的是obj-c中的类的继承,需要说明的是我只是写了继承中最简单的形式,如果全部展开来说,那就多了去了!关键是现在肚子里还没装够墨水,没法展开啊!     下面的代码中,我们写了2个类:父类A和子类B,然后B中对A中的方法做了重写. #import <Foundation/Foundation.h> @interface A:NSObject{ int i; } @property int i; -(void)print; @end @implementatio

java类的问题-java编程,有关类的继承,方法的覆盖等

问题描述 java编程,有关类的继承,方法的覆盖等 类Citizen,拥有identityCardNumber(String).name(String).gender(char).birthPlace(String).birthday(java.util.Date)属性,构造方法Citizen(String identityCardNumber, String name, char gender).Citizen(String identityCardNumber, String name, c

JPanel继承问题... 写了一个类,继承自JPanel,但是控件不显示,跪求求各位大牛...

问题描述 JPanel继承问题... 写了一个类,继承自JPanel,但是控件不显示,跪求求各位大牛... 在做一个世界各个国家的时间的一个Demo.写了一个继承自JPanel类的panel,里面简单的设置了一个Logo,国家名字,还有一个按秒跳动时间,现在的问题就是在这个panel上的控件都不显示了,调了好久了也没有找到原因,所以没办法了,特来求助各位大牛们..... 话不多说,直接贴代码: package timerDemo; import java.awt.BorderLayout; im

C#从自定义的窗口类中继承,设计界面无法使用

问题描述 C#从自定义的窗口类中继承,设计界面无法使用 在vs2008中新建一个智能设备项目,创建从Form继承的类 创建继承ChidForm的窗体,打开设计视图后就报错. public partial class Form1 : ChidForm { public Form1() { InitializeComponent(); } } 解决方案 你单步调试,跟踪进去InitializeComponent方法,一步步看看,里面估计有错误 解决方案二: design.cs一定要写好

变量-C#类的继承,C#有public,protected,private这几种继承之说吗??

问题描述 C#类的继承,C#有public,protected,private这几种继承之说吗?? 如果没有,那是以哪种形式继承: 如果父类 有1.private 变量,2.protected变量 ,3.public变量, 在子类中这几个变量是什么,是private .protected.public. 解决方案 没有,C#和C++不同,只有一种继承方式,相当于C++的public继承.也就是基类中的private成员,在派生类中不可见.另外,在C# 1.0的时代,C#的继承方式相当于priva

python类的继承

python 类的继承 对于许多文章讲解python类的继承,大多数都是说一些什么oop,多态等概念,我认为这样可能对有一定基础的开发者帮助不是那么大,不如直接用在各种情况下所写的代码,来展示对于某一种代码情况,代码运行会有什么效果.这样可能对开发者的帮助更大.不说废话,直接上代码. 这里不区分经典类和新式类,下面分析的对新式类和经典类都适用 对于类中的__init__函数,只是一个初始化是调用的一个函数(ps:初始化和创建实例并不是一个过程,实例的创建是通过一个create函数来完成的),如果