java - 对象和类之间的区别

标签 java

假设我们的类没有任何构造函数和实例变量

public class ConsoleWriter{
  public void write(){
    System.out.println("Console Writing...");
  }
}

你还有另一个类 App,有 2 个变量 console 和 console1

public class App{
   ConsoleWriter console;
   ConsoleWtiter console1=new ConsoleWriter();
}

现在我明白console1是ConsoleWriter的一个对象,而console只是ConsoleWriter的引用类型。

当遇到这种情况时(没有构造函数,没有实例变量)

有什么区别?

或者,如果我们可以使用 console 来创建对象 console1,那么它会有什么用处。

console.write();//would output Console Writing...
console1.write();//would output Console Writing...

最佳答案

console1 is an object of ConsoleWriter

这是一个指向 ConsoleWriter 类型对象的引用,这是不正确的。由于未初始化,它将指向 null。此外,您无法调用它的方法,因为它尚未初始化。

console.write();//would output Console Writing...

这也是不正确的。必须先初始化。

ConsoleWtiter console1=new ConsoleWriter();

这相当于

ConsoleWtiter console1;

它创建一个指向 ConsoleWriter 类的对象/实例的引用。由于它是一个实例变量,因此它被分配默认值,即 null。

console1 = new ConsoleWriter();

此时,引用控制台实际上指向 ConsoleWriter 类的对象。只有在这个(初始化)之后你才能调用该类的方法。

关于java - 对象和类之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20967382/

相关文章:

java - 如何从父类(super class)到子类重用代码 Intent Intent=new Intent(context,Activity.class) ?

java - 删除重复代码

java - Apache James 邮件服务器 - 将附件保存在文件系统上

java - 跟踪放入数组的时间点

java - 在Java中的不同线程中运行后台进程

java - firestore 快照监听器的生命周期和定价之间有什么关系?

java - 在 JAX-RS Web 服务过滤器中获取 JSON 消息

java - SQLiteDatabase getWritableDatabase() { 抛出新的 RuntimeException ("Stub!"); }

java - 通过循环添加对象时 ArrayList 不扩展

java - 具有 unboundID 的 Ldap SASL