A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵学辉 中级黑马   /  2012-7-11 08:06  /  1736 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

是不是用abstract定义了抽象类的类名可以去实例化任意一个类的对象(没有继承这个抽象类)??
请高手细说一下!!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
1,所谓实例化某个类,要么new一个对象,要们反射一个对象实例,这个过程才称为类的实例化;
2,C#明确规定抽象类不可以实例化,但可以包含实例成员;
3,抽象成员不能实例化,必须由继承它的子类(派生类)来重写它的抽象成员。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
不是的,比如下面定义的三个类:
public abstract class Person{}//人类
public class Student : Person{}//学生类
public class HighSchoolStudent : Student{}//高中生类
public class Dog{}//狗类
Person p1 = new Student();//合法
Person p2 = new HighSchoolStudent();//合法
Person p3 = new Dog();//这是不合法的
也就是说只有抽象类的直接或间接子类能作为此抽象类的的实例

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
抽象类不能实例化;
实例化是指某个类,使用new一个对象,要们反射一个对象实例,这个过程才称为类的实例化;
如果想对一个抽象类实例化;只能实例化他的子类或者孙子类;需要继承这个类或者实现;

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马