C# 语言中,基类和子类的实例化问题
如果A是某一基类,B是A的一个子类。下面两种初始化的区别:(1)Aaa=newB();(2)Baa=newB();谢谢回答。。。...
如果A是某一基类,B是A的一个子类。
下面两种初始化的区别:
(1)A aa = new B();
(2)B aa = new B();
谢谢回答。。。 展开
下面两种初始化的区别:
(1)A aa = new B();
(2)B aa = new B();
谢谢回答。。。 展开
展开全部
A aa = new B();这样创建的是A的对象,虽然指向的是B,但它还是基类的对象,所以aa只能点出来A的属性和方法。
B aa = new B();创建的是B的对象,aa可以点出来B类中特有的属性和方法。
B aa = new B();创建的是B的对象,aa可以点出来B类中特有的属性和方法。
更多追问追答
追问
第一种情况aa可以使用B中的字段和方法吗?
同问第二种情况。
追答
不可以用B类的方法和字段
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、直白地解释就是:
通过已有的类(class)创建出该类的一个对象(object),这一过程就叫做类的实例化。
2、打个比方:
设计了一个飞机模型,交给工人师傅去加工制作,生产出一个(一批)飞机。飞机模型就相当于程序中的类,生产出来的飞机就是对象,生产飞机这一过程就叫做类的实例化。
MyPlane plane1= new MyPlane(); //类的实例化
通过已有的类(class)创建出该类的一个对象(object),这一过程就叫做类的实例化。
2、打个比方:
设计了一个飞机模型,交给工人师傅去加工制作,生产出一个(一批)飞机。飞机模型就相当于程序中的类,生产出来的飞机就是对象,生产飞机这一过程就叫做类的实例化。
MyPlane plane1= new MyPlane(); //类的实例化
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
A aa = new B();
声明的是A的对象aa = 实例化 B ,但实际内存空间开辟的是B类 的大小。利用了面向对象的多态性质。
区别是,A 声明的aa不能直接调用B独有的(不是继承过来的)成员方法,或者 成员变量。如果想用的话 需要强制类型转换!
声明的是A的对象aa = 实例化 B ,但实际内存空间开辟的是B类 的大小。利用了面向对象的多态性质。
区别是,A 声明的aa不能直接调用B独有的(不是继承过来的)成员方法,或者 成员变量。如果想用的话 需要强制类型转换!
追问
那声明的aa可调用B中公共成员吗?
可以访问A中公共和私有成员吗?欢迎补充。。。
追答
B是继承自A的,所以aa可以调用A中的成员,至于权限的话,只能调用公有的,但是继承的时候可以访问保护权限的。
B的实例 aa 调用B自身的公有成员就更没问题了。前提是要强制类型转换。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询