title: Statements in anonymous class declaration
body: <p>I was going through anonymous class tutorial from oracle documentation (<a href="https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html">https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html</a>)</p>
  
  <p>I've copied the code used in the tutorial.(Comments Statement1 and Statement2 are appended by me):</p>
  
  <pre><code>public class HelloWorldAnonymousClasses {
  
      interface HelloWorld {
          public void greet();
          public void greetSomeone(String someone);
      }
  
      public void sayHello() {
  
          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();
  
          HelloWorld frenchGreeting = new HelloWorld() {
              String name = "tout le monde"; //Statement1
              public void greet() {
                  greetSomeone("tout le monde");
              }
              public void greetSomeone(String someone) {
                  name = someone;
                  System.out.println("Salut " + name);
              }
          };
  
          HelloWorld spanishGreeting = new HelloWorld() {
              String name = "mundo"; //Statement2
              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();
      }            
  }
  </code></pre>
  
  <p>The tutorial goes on to explain:
  The anonymous class expression consists of the following:</p>
  
  <ol>
  <li><p>The new operator</p></li>
  <li><p>The name of an interface to implement or a class to extend. In this example, the anonymous class is implementing the interface HelloWorld.</p></li>
  <li><p>Parentheses that contain the arguments to a constructor, just like a normal class instance creation expression. Note: When you implement an interface, there is no constructor, so you use an empty pair of parentheses, as in this example.</p></li>
  <li><p>A body, which is a class declaration body. <strong>More specifically, in the body, method declarations are allowed but statements are not.</strong></p></li>
  </ol>
  
  <p>I got confused by the point no. 4 above. It says that statements are not allowed in the anonymous class declaration body but I can see statements used inside it.
  (I've put comments Statement1 and Statement2 to highlight them).</p>
  
  <p>Could you please explain what the tutorial wants to convey from point no. 4?</p>
  
  <p>Thanks in advance.</p>