1. interfaces in java are essentially constrained abstract classes // abstract classes public abstract class AExample {public abstract int add (int x, int y); public abstract int sub (int x, int y);} // interface public interface IExample {public int add (int x, int y); public int sub (int x, int y );} the common usage is to create a new class, which implements an interface or derives from an abstract class. This new class must implement all methods defined in the interface or all abstract methods in the abstract class. 1. Implementation of the abstract class: public class MyClass extends AExample {// other member definitions: // implement the abstract method public int add (int x, int y) in the abstract class) {return x + y;} public int sub (int x, int y) {return x-y;} // other part: omitted} usage: AExample AE = new MyClass (); int s = AE. add (4, 2); int t = AE. sub (); 2. Interface implementation method: public class MyClass implements IExample {// other member definitions: slightly // implement abstract methods in abstract classes public int add (int x, int y) {return x + y;} public int sub (int x, int y) {retur N x-y;} // other part: omitted} usage: IExample AE = new MyClass (); int s = AE. add (4, 2); int t = AE. sub (); it can be seen that the two are essentially the same and use methods are very similar. Ii. Special implementation methods here do not use the methods for deriving new classes from abstract classes and implementing new classes using interfaces. 1. Let's take a look at the array initialization example: int [] array; after defining the array, array is just a reference. array [0], array [1] is not implemented, that is, it does not exist. However, if the initialization is: int [] array = new int [] {1, 2}; 1 and 2 are considered as two "member instances" of the array ". In this case, array [0] and array [1] are implemented, that is, array is implemented. 2. interfaces and abstract classes can be implemented in a similar way: AExample AE = new AExample () {public int add (int x, int y) {return x + y ;} public int sub (int x, int y) {return x-y ;}}; int s = AE. add (4, 2); int t = AE. sub (); the so-called "member instance" here is the implementation of the add and sub methods. And IExample AE = new IExample () {public int add (int x, int y) {return x + y;} public int sub (int x, int y) {return x-y ;}}; int s = AE. add (4, 2); int t = AE. sub (4, 2); amazing! Iii. Summary In fact, this method is rarely used in general and mainly used in event handling. And mainly uses interfaces. The above is a question I encountered when learning java's event processing programming: Why is the java event listener registered in the form of this: // Person is a class designed by myself to handle events. PersonListener is an interface-listener interface Person p = new Person ("Tong", 53 ); //////////////////////////////////////// //////////////////////////////////////// //////////////// // create an instance of the event listener interface and register p. addPersonListener (new PersonListener () {public void OnNameChanged (PersonEventObject e) {// custom event processing code System. out. println ("Name:" + (Perso N) (e. getSource ())). getName ();} public void OnAgeChanged (PersonEventObject e) {// custom event processing code System. out. println ("Name:" + (Person) (e. getSource ())). getName ());}}); //////////////////////////////////////// ////////////////////////////////////////. addPersonListener (...) the two steps are clear: PersonListener pl = new PersonListener () {public void OnNameChanged (PersonEventObject e) {www.2cto. Com // custom event processing code System. out. println ("Name:" + (Person) (e. getSource ())). getName ();} public void OnAgeChanged (PersonEventObject e) {// custom event processing code System. out. println ("Name:" + (Person) (e. getSource ())). getName () ;}}; p. addPersonListener (pl); let's take a look at the problem we discussed above. Through this example, we hope that many beginners of java will get the result.