A a=new B();
这个a和A B分别有什么关系呢?到底是B的对象还是A的对象呢? 如果是B的对象,
a和A又有什么关系呢? 为什么不直接写成 B a= new B()呢?
本人初学者,想请教一下各位,谢谢了!
A a=new B();
这个a和A B分别有什么关系呢?到底是B的对象还是A的对象呢? 如果是B的对象,
a和A又有什么关系呢? 为什么不直接写成 B a= new B()呢?
本人初学者,想请教一下各位,谢谢了!
这个问题比较难,你没什么基础,所以说术语你听不懂。我就说简单点:
A a = new B(); 这个里面涉及到3个东西,就是你问的A a B。
首先A B,这个东西叫做类,比如说,A类,B类,人类,你看,这个A B 其实和 人一样的。既然一样,我就拿人来说。
人,分为男人类,女人类。那这个男人类其实就是人类的一个更细致的划分,我说人包含了男人类,这话没毛病。
如果你说男人类 包含人类,这话就有毛病了。但是我说到现在都是抽象的,就是都是概念性的东西,
但是你(假设你叫张三并且是个汉子)。你属于 男人类,你是一个具体的东西,是由抽象的东西(男人类)而来的。
A a = new B();
等价于
人 张三 = new 男人();
翻译过来就是,你张三是男人,属于人,你问 A 和 a什么关系,就等价于 人 和张三是什么关系,
就是张三是一个实体,实实在在存在的,而人只是描述张三这个实体属于那种类型的一个说明,就是表示,张三是一个人。
B a= new B() 这个就等价于 男人 张三 = new 男人();
完全可以的,没毛病,但是为什么都建议写成 人 张三 = new 男人();而不建议写成 男人 张三 = new 男人()呢
比如说你有一个类C,这个类里面有个方法,
addPerson(人 某某某) 或者 addPerson(男人 某某某)
如果你定义成前面方式,你可以添加男人,也可以添加女人,如果你定义成后面那种,那你只能添加男人。
抽象的东西往往具有不定性,具有灵活性。具体的东西就定死了。