抽象子类继承抽象父类时 在main中实例化子类为何有{};以及{}有什么用?

package assignment15;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
import org.w3c.dom.ls.LSOutput;

public class Test {
public static void main( String[] args ) {

    Printer printer= new DotMatrixPrinter(){};//就是这个括号
    Printer printer1=new InkpetPrinter();
    printer.Print();
    printer1.Print();

}}

抽象子类继承抽象父类
package assignment15;

public abstract class DotMatrixPrinter extends Printer {
@Override
void Print() {
System.out.println("针式打印机");

}

}

你这么写也可以,去掉大括号。

 Printer printer= new DotMatrixPrinter();

匿名内部类

public class HelloWorldAnonymousClasses {

    /**
     * 包含两个方法的HelloWorld接口
     */
    interface HelloWorld {
        public void greet();
        public void greetSomeone(String someone);
    }

    public void sayHello() {

        // 1、局部类EnglishGreeting实现了HelloWorld接口
        class EnglishGreeting implements HelloWorld {
            String name = "world";
            public void greet() {
                greetSomeone("world");
            }
            public void greetSomeone(String someone) {
                name = someone;
                System.out.println("Hello " + name);
            }
        }

        HelloWorld englishGreeting = new EnglishGreeting();

        // 2、匿名类实现HelloWorld接口
        HelloWorld frenchGreeting = new HelloWorld() {
            String name = "tout le monde";
            public void greet() {
                greetSomeone("tout le monde");
            }
            public void greetSomeone(String someone) {
                name = someone;
                System.out.println("Salut " + name);
            }
        };

        // 3、匿名类实现HelloWorld接口
        HelloWorld spanishGreeting = new HelloWorld() {
            String name = "mundo";
            public void greet() {
                greetSomeone("mundo");
            }
            public void greetSomeone(String someone) {
                name = someone;
                System.out.println("Hola, " + name);
            }
        };

        englishGreeting.greet();
        frenchGreeting.greetSomeone("Fred");
        spanishGreeting.greet();
    }

    public static void main(String... args) {
        HelloWorldAnonymousClasses myApp = new HelloWorldAnonymousClasses();
        myApp.sayHello();
    }
}
 Printer printer= new DotMatrixPrinter(){};//就是这个括号

这个{}就是方法体,里面编写代码内容,这种写法右边是一个匿名内部类,有一个方法应该是复写这个类内部的方法。这种用法是Java的多态,还有匿名内部类扩展多看看你就知道了