编程语言
首页 > 编程语言> > java-问:抽象类对象的初始化代码?

java-问:抽象类对象的初始化代码?

作者:互联网

在此类中,抽象类对象通过重写getNum()实例化,这的目的是什么?

public abstract class AbstractTest {
 public int getNum() {
  return 45;
 }
 public static void main(String[] args) // main function
  {
   AbstractTest t = new AbstractTest() // From this point didn't understand
    {
     public int getNum() // function
      {
       return 22;
      }
    }; //use of this        
   System.out.println(t.getNum()); // output
  }
}

解决方法:

main()方法中的实例化只是抽象类AbstractTest的具体实例的内联类定义.显然,变量t是一个匿名的非抽象类实例.以下代码将实现相同的目的:

public class ConcreteTest extends AbstractTest {
    @Override
    public int getNum() {
        return 22;
    }
}

public static void main (String [] args) {
    ConcreteTest t = new ConcreteTest();
    System.out.println(t.getNum());
}

在开发过程中,有些实例不得不创建正式的类定义.例如,如果您只需要抽象AbstractTest类的单个实例,则使用内联定义会更容易.

标签:abstract-class,java
来源: https://codeday.me/bug/20191118/2031545.html