abstract与继承问题?

问题描述

在C#编程中,为什么给父类加了abstract并且该类中有一个抽象方法,当该父类有多个子类时.我用一个LIST<父类型>来ADD他的子类对象进去.并且各个子类都实现了父类的抽象方法,现在我要做的是用一个foreach循环取出集合里每个子类对象来调用他们各自的实现了的抽象方法.为什么不需要转换即可调用它们实现了的方法呢?编译器是好何区分的呢?还有一问就是在ADD进去的子类对象是否自动转换为父类类型的对象??////////////////////////请高人赐教/////////////////////////

解决方案

解决方案二:
大哥,难道你能调用抽象方法?实例类型是子类的当然调用子类的方法
解决方案三:
因为abstract方法也是virtual方法,他是运行时多态
解决方案四:
首先List是泛型类列表,类型不用管。其次ADD就是实例化好的类型,具体能不能从子类转到父类就不知道了,但是父类的方法是可以用的。

时间: 2024-10-15 20:55:37

abstract与继承问题?的相关文章

java继承

* 继承(extends) * java是一种树形结构(联结类的层次模型),单继承(父类),多实现(接口+内部类) * 子类和父类之间是is-a关系 * 在子类中使用super关键字,访问父类的成员,super必须出现在子类.本类中方法中this调用本类的成员(属性和方法,区别于局部变量),在构造方法中调用(替代)其他构造方法 * 继承规则:①不能继承private成员 *                 ②子类和父类不在同包时,不能继承default默认修饰符成员 *            

Web设计里的软件工程思想

web|设计 现在的网站规模越来越大,涉及到的部门.人员的数量也是越来越多.自然而然的,Web开发组的规模也是越来越复杂了,由此所带来的管理难度也越来越大,在下面的文章里,我将与大家探讨一些相关的Web设计观念. 1. Web是一种软件么? 最早的Web设计是很简单的,一大堆的超链接,有些地方偶尔会看见很高级的CGI(在当时的环境下),而现在的Web已经具备了与数据紧密连接的需要,现在的Web项目中已经出现了很多B/S结构的应用,不用怀疑,Web已经或者即将成为软件的一个重要分枝. 2. Web

学习Java的笔记(3)

笔记   61.每个类 只有一个类变量,属于该类的对象会共享类变量.不需要通过对象来存取类变量.62.一个static方法只能存取类的static数据:一个static方法只能存取类的static方法:无法在算他题 词方法中使用this:一个static方法无法被非static方法所替代.63.构造函数并没有返回值,它需和所在的类同名,如果所用的类并没有构造函数,Java编译器会自动生 成一个默认构造函数(不含参数).64.Java中,new是不可省略的,使用new表示该变量的内存是动态分配的,

Java设计模式之Strategy(策略)模式

Strategy是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类. Stratrgy应用比较广泛,比如,公司经营业务变化图,可能有两种实现方式,一个是线条曲线,一个是框图(bar),这是两种算法,可以使用Strategy实现. 这里以字符串替代为例, 有一个文件,我们需要读取后,希望替代其中相应的变量,然后输出.关于替代其中变量的方法可能有多种方法,这取决于用户的要求,所以我们要准备几套变量字符替代方案. 首先,我们建立一个抽象类RepTempRule 定

PHP5 面向对象(学习记录)_php技巧

1,继承extends 只能单继承 public protected private 属性 __construct() __destruct() __get()读取私有成员 __set($n,$v) 设置私有成员 2,访问父类函数 :: (c++里面也叫作用域符) 7 3,重载 和 父类名字相同的 函数 4,抽象类 abstract 必须继承 不能被实例话 并且 必须要重写抽象函数 只要类中有一个函数是静态的 那么类必须为静态 5,常用关键字 1,final 定义类的时候 类 不能被继承 定义

Java设计模式之策略模式(Strategy模式)介绍_java

Strategy是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类. Stratrgy应用比较广泛,比如,公司经营业务变化图,可能有两种实现方式,一个是线条曲线,一个是框图(bar),这是两种算法,可以使用Strategy实现. 这里以字符串替代为例,有一个文件,我们需要读取后,希望替代其中相应的变量,然后输出.关于替代其中变量的方法可能有多种方法,这取决于用户的要求,所以我们要准备几套变量字符替代方案. 首先,我们建立一个抽象类RepTempRule 定义

php中关于抽象(abstract)类和抽象方法的问题分析

 这篇文章主要介绍了php中关于抽象(abstract)类和抽象方法的问题分析,有需要的朋友可以参考一下 在面向对象(OOP)语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法作为外部代码访问的接口.而抽象方法就是为了方便继承而引入的,现在来看一下抽象类和抽象方法分别是如何定义以及他们的特点.   什么是抽象方法?我们在类里面定义的只有方法名没有方法体的方法就是抽象方法,所谓没有方法体就是在方法声明的时候没有大括号以及其中的内容,而是直接声明时在方法名后加上分号结束,另外在声明抽象

php中关于抽象(abstract)类和抽象方法

  在面向对象(OOP)语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法作为外部代码访问的接口.而抽象方法就是为了方便继承而引入的,现在来看一下抽象类和抽象方法分别是如何定义以及他们的特点. 什么是抽象方法?我们在类里面定义的只有方法名没有方法体的方法就是抽象方法,所谓没有方法体就是在方法声明的时候没有大括号以及其中的内容,而是直接声明时在方法名后加上分号结束,另外在声明抽象方法时还要加一个关键字"abstract"来修饰. 1.抽象关键字 :abstract 抽象就是

重写-C#中override和abstract能否同时修饰方法/类

问题描述 C#中override和abstract能否同时修饰方法/类 在网上查发现有人说能 有人说不能 好疑惑 求大神们解疑 我是认可 不能同时修饰的 解决方案 这么用没有任何意义,因为你override就是为了重写基类的方法.你又是abstract,也就是你不打算重写. 换一句话说,这是没有任何意义的.因为你的派生类继承你这个类,那么自然就得到了这个类基类的方法. 除非你希望定义一个重名的,但是和它基类没有关系的方法,同时它是abstract的,那么你不应该用override而应该用new.