这里我为C类创建了一个Object,由于继承机制,它可以创建三个对象(C,B和A)。我通过查看代码来计算。但我想通过程序化的盟友来计算。我的意思是,是否有可能计算出我的班级创造的物品怎么样?它们是什么?
以下是我的代码:
class A {
A() {
System.out.println("class A");
}
}
class B extends A {
B() {
System.out.println("class B");
}
}
class C extends B {
public static void main(String args[]) {
C c = new C();
}
}
答案 0 :(得分:1)
class A {
static int a;
{
System.out.println("class A , "+ (++a));
}
}
class B extends A {
static int b;
{
System.out.println("class B ,"+ (++b));
}
}
class C extends B {
static int c;
{
System.out.println("class C ,"+ (++c));
}
public static void main(String args[]) {
C c = new C();
}
}
不使用构造函数中的递增计数器,而是使用init块来递增计数器。 当您不使用default或no-arg构造函数创建对象时,这将对您有所帮助。
答案 1 :(得分:0)
不是"自动",但您可以添加代码来执行此操作:
class A {
private static List<A> instances = new ArrayList<>();
A() {
if (instances.size() > 2)
throw new IllegalStateException("may not create more than 3 instances");
instances.add(this);
System.out.println("class A");
}
public static List<A> getInstances() {
return instances;
}
}
答案 2 :(得分:0)
通过使用static int类型的计数器可以找到创建特定类的对象的数量。喜欢:
Class A {
public: static int count = 0;
A(){
// inside constructor increment the counter for each constructor call
count ++;
}
void totalCount(){
System.out.print(count);
}
}
然后调用totalCount()方法以显示创建的对象数。希望这会有所帮助..
答案 3 :(得分:0)
你可以这样试试。
public class A {
static int i;
List<Integer> instanceA=new ArrayList<>();
A() {
instanceA.add(++i);
System.out.println("class A");
}
}
public class B extends A{
static int i;
List<Integer> instanceB=new ArrayList<>();
B() {
instanceB.add(++i);
System.out.println("class B");
}
}
public class C extends B {
static int i;
List<Integer> instanceC = new ArrayList<>();
C() {
instanceC.add(++i);
}
public static void main(String args[]) {
C c = new C();
System.out.println("Number of C"+c.instanceC);
System.out.println("Number of B"+c.instanceB);
System.out.println("Number of A"+c.instanceA);
}
}
如果你创建了两个C实例,如下所示。
C c = new C();
C c1=new C();
System.out.println("Number of C"+c1.instanceC);
System.out.println("Number of B"+c1.instanceB);
System.out.println("Number of A"+c1.instanceA);
您将获得如下输出
class A
class B
class A
class B
Number of C[2]
Number of B[2]
Number of A[2]