如何解决Java 虚拟机创建了多少个对象?
Java 中的所有类默认扩展 Object
public class Dog{
public Dog()
}
public static void main(String args[]){
Dog dog = new Dog();
}
如果我编译此代码,JVM 将在堆 1-对象 2-Dog 上创建 2 个类。如果 Dog 类实现了一个接口并扩展了一个抽象类,会发生什么?
public interface Animal{
}
public abstract class Mammal{
}
在这种情况下,Dog 将实现 Animal 接口并扩展 Mammal 抽象类:
public class Dog extends Mammal implements Animal{
public Dog();
}
当我现在像以前一样创建 Dog 对象时,JVM 将在堆上创建多少个对象?
public static void main(String args[]){
Animal Dog = new Dog();
}
如果我用 Animal 类型创建 Dog,会发生什么变化?
解决方法
您仍然只有一个 Dog
实例,无论它实现的接口或扩展的类如何。
无论您的类实现了多少个 interface
,在这种情况下创建的实例数都只是一个。每当您有疑问时,您应该考虑是否可以实例化 interface
或 abstract class
并且您会得到 NO 作为答案。因此,创建的实例数量将与您使用具体类创建的数量相同,在本例中为 Dog
。
回答你的最后一个问题:我们称之为多态
如果您对它们具有相同的属性,它将使用属于 Dog 类的属性
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。