Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在其中创建子类对象';什么是基类?_Java - Fatal编程技术网

Java 如何在其中创建子类对象';什么是基类?

Java 如何在其中创建子类对象';什么是基类?,java,Java,它很简单,因为您可以在相同类类型的类中创建对象,也可以创建其子类类型。它很简单,因为您可以在相同类类型的类中创建对象,您也可以创建它的子类类型。您的问题的关键似乎是您正在其基类arijit的main方法中创建amit类的实例,您想知道这是怎么可能的 为什么不可能呢?您的main方法按名称引用子类,因此从这个角度看,它与任何其他类都一样。如果您愿意,也可以在非静态成员中执行 在体系结构上,如果基类知道其子类的详细信息(如名称),则通常表明您的结构存在问题;这不是通常的做法。您的问题的关键似乎是您正

它很简单,因为您可以在相同类类型的类中创建对象,也可以创建其子类类型。

它很简单,因为您可以在相同类类型的类中创建对象,您也可以创建它的子类类型。

您的问题的关键似乎是您正在其基类
arijit
main
方法中创建
amit
类的实例,您想知道这是怎么可能的

为什么不可能呢?您的
main
方法按名称引用子类,因此从这个角度看,它与任何其他类都一样。如果您愿意,也可以在非静态成员中执行


在体系结构上,如果基类知道其子类的详细信息(如名称),则通常表明您的结构存在问题;这不是通常的做法。

您的问题的关键似乎是您正在其基类
arijit
main
方法中创建
amit
类的实例,您想知道这是怎么可能的

为什么不可能呢?您的
main
方法按名称引用子类,因此从这个角度看,它与任何其他类都一样。如果您愿意,也可以在非静态成员中执行


在体系结构上,如果基类知道其子类的详细信息(如名称),则通常表明您的结构存在问题;这不是通常的做法。

也许您需要区分编译时和运行时

在编译时,arijit的结构是众所周知的。在类的中间,主要使用子类并不重要,因为这是运行时的事情


但是我承认,Java编译器并没有那么愚蠢:)

也许您需要区分编译时和运行时

在编译时,arijit的结构是众所周知的。在类的中间,主要使用子类并不重要,因为这是运行时的事情


但是我承认,Java编译器并没有那么愚蠢:)

当你编译你的程序时,会形成两个.class文件,即arijit.class和amit.class。
因此,当您的程序被解释时,解释器同时知道.class文件,因此您可以创建这样的对象。

当您编译程序时,会形成两个.class文件,即arijit.class和amit.class。
所以当你的程序被解释时,解释器知道.class文件,因此您可以创建这样的对象。

无法在父类中创建子类的位置在构造函数中。

无法在父类中创建子类的位置在构造函数中。

也许您可以为您的问题添加更多信息。从最上面的一行和一些源代码来看,不清楚您的问题到底是什么。也许您可以在问题中添加更多信息。仅从顶行和一些源代码来看,不清楚您的问题到底是什么。
class arijit
{
 public static void main(String args[])
 {
  System.out.println("Base class main");
  amit ab=new amit(); //how is it possible as the sub class object also holds base class  
  ab.a();
  ab.ma();
 }
 public void m()
 {
  System.out.println("Base class method");
 }
}

class amit extends arijit
{
 public void a()
 {
  System.out.println("Sub Class method");
  m();
 }
}