【问题标题】:Objects with the same attributes and methods belongs to the same class?具有相同属性和方法的对象属于同一个类?
【发布时间】:2010-05-04 13:12:47
【问题描述】:
具有相同属性和方法的对象属于同一个类?
-
我不能声明两个具有相同方法和属性的相同类,将它们实例化并具有“具有相同属性和方法的对象属于不同类”吗?
我不能声明一个类 A 和一个子类 B(类 A 的子类)都具有相同的方法和属性(并且不要在类 B 上声明任何新属性或方法) ,实例化它们并拥有“属于不同类的具有相同属性和方法的对象”?
这个问题不是关于良好做法...而是关于标题上问题的逻辑值(真或假)。
【问题讨论】:
标签:
oop
class
object
hierarchy
ambiguity
【解决方案1】:
你没有具体说明你在说什么语言;也许有一些外来语言具有您描述的属性,但至少在 Java 和 C++ 等语言中,没有根据它们声明的方法/实例变量推断两个类“相同”的概念。
所以,答案是“不,它们不是同一个类,即使它们看起来一样”。
子类情况有点不同:如果将B声明为A的子类(不添加任何方法或变量),它们仍然是不同的类,但也是类B的对象“is-a”A,因为正常的继承规则。
【解决方案2】:
这绝对是可能的。
class A
{
public string Property1{get;set;}
public string Method1(int value)
{
......
}
}
class B
{
public string Property1{get;set;}
public string Method1(int value)
{
........
}
}
两个类是相同的。具有相同的属性和方法。但是他们的例子会有所不同。