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的多态,还有匿名内部类扩展多看看你就知道了