zoukankan      html  css  js  c++  java
  • Java中4种类型的内部类 .

    在Java中有4种不同类型的内部类可以使用。下面给出它们的名称和例子。

    1.静态嵌套类(Static Nested Classes)

    1. class Outer {  
    2.     static class Inner {  
    3.         void go() {  
    4.             System.out.println("Inner class reference is: " + this);  
    5.         }  
    6.     }  
    7. }  
    8.    
    9. public class Test {  
    10.     public static void main(String[] args) {  
    11.         Outer.Inner n = new Outer.Inner();  
    12.         n.go();  
    13.     }  
    14. }  
    class Outer {
    	static class Inner {
    		void go() {
    			System.out.println("Inner class reference is: " + this);
    		}
    	}
    }
     
    public class Test {
    	public static void main(String[] args) {
    		Outer.Inner n = new Outer.Inner();
    		n.go();
    	}
    }

    输出:Inner class reference is: Outer$Inner@19e7ce87

    2.成员内部类(Member Inner Class)

    成员类是特定于实例的。它可以访问所有方法,字段和外部类本身的引用。

    1. public class Outer {  
    2.     private int x = 100;  
    3.    
    4.     public void makeInner(){  
    5.         Inner in = new Inner();  
    6.         in.seeOuter();  
    7.     }  
    8.    
    9.     class Inner{  
    10.         public void seeOuter(){  
    11.             System.out.println("Outer x is " + x);  
    12.             System.out.println("Inner class reference is " + this);  
    13.             System.out.println("Outer class reference is " + Outer.this);  
    14.         }  
    15.     }  
    16.    
    17.     public static void main(String [] args){  
    18.         Outer o = new Outer();  
    19.         Inner i = o.new Inner();  
    20.         i.seeOuter();  
    21.     }  
    22. }  
    public class Outer {
        private int x = 100;
     
        public void makeInner(){
            Inner in = new Inner();
            in.seeOuter();
        }
     
        class Inner{
            public void seeOuter(){
                System.out.println("Outer x is " + x);
                System.out.println("Inner class reference is " + this);
                System.out.println("Outer class reference is " + Outer.this);
            }
        }
     
        public static void main(String [] args){
        	Outer o = new Outer();
            Inner i = o.new Inner();
            i.seeOuter();
        }
    }

    输出:

    Outer x is 100
    Inner class reference is Outer$Inner@4dfd9726
    Outer class reference is Outer@43ce67ca

     

    3.局部方法内部类(Method-Local Inner Classes)

    1. public class Outer {  
    2.     private String x = "outer";  
    3.    
    4.     public void doStuff() {  
    5.         class MyInner {  
    6.             public void seeOuter() {  
    7.                 System.out.println("x is " + x);  
    8.             }  
    9.         }  
    10.    
    11.         MyInner i = new MyInner();  
    12.         i.seeOuter();  
    13.     }  
    14.    
    15.     public static void main(String[] args) {  
    16.         Outer o = new Outer();  
    17.         o.doStuff();  
    18.     }  
    19. }  
    public class Outer {
    	private String x = "outer";
     
    	public void doStuff() {
    		class MyInner {
    			public void seeOuter() {
    				System.out.println("x is " + x);
    			}
    		}
     
    		MyInner i = new MyInner();
    		i.seeOuter();
    	}
     
    	public static void main(String[] args) {
    		Outer o = new Outer();
    		o.doStuff();
    	}
    }

    输出:x is outer

    1. public class Outer {  
    2.     private static String x = "static outer";  
    3.    
    4.     public static void doStuff() {  
    5.         class MyInner {  
    6.             public void seeOuter() {  
    7.                 System.out.println("x is " + x);  
    8.             }  
    9.         }  
    10.    
    11.         MyInner i = new MyInner();  
    12.         i.seeOuter();  
    13.     }  
    14.    
    15.     public static void main(String[] args) {  
    16.         Outer.doStuff();  
    17.     }  
    18. }  
    public class Outer {
    	private static String x = "static outer";
     
    	public static void doStuff() {
    		class MyInner {
    			public void seeOuter() {
    				System.out.println("x is " + x);
    			}
    		}
     
    		MyInner i = new MyInner();
    		i.seeOuter();
    	}
     
    	public static void main(String[] args) {
    		Outer.doStuff();
    	}
    }

    输出:x is static outer

    4.匿名内部类(Anonymous Inner Classes)

    当您需要给一个GUI应用程序窗口小部件加一个动作监听器时,匿名内部类就会经常被用到。

    1. button.addActionListener(new ActionListener(){  
    2.      public void actionPerformed(ActionEvent e){  
    3.          comp.setText("Button has been clicked");  
    4.      }  
    5. });  

      在Java中有4种不同类型的内部类可以使用。下面给出它们的名称和例子。

      1.静态嵌套类(Static Nested Classes)

      1. class Outer {  
      2.     static class Inner {  
      3.         void go() {  
      4.             System.out.println("Inner class reference is: " + this);  
      5.         }  
      6.     }  
      7. }  
      8.    
      9. public class Test {  
      10.     public static void main(String[] args) {  
      11.         Outer.Inner n = new Outer.Inner();  
      12.         n.go();  
      13.     }  
      14. }  
      class Outer {
      	static class Inner {
      		void go() {
      			System.out.println("Inner class reference is: " + this);
      		}
      	}
      }
       
      public class Test {
      	public static void main(String[] args) {
      		Outer.Inner n = new Outer.Inner();
      		n.go();
      	}
      }
      输出:Inner class reference is: Outer$Inner@19e7ce87

      2.成员内部类(Member Inner Class)

      成员类是特定于实例的。它可以访问所有方法,字段和外部类本身的引用。
      1. public class Outer {  
      2.     private int x = 100;  
      3.    
      4.     public void makeInner(){  
      5.         Inner in = new Inner();  
      6.         in.seeOuter();  
      7.     }  
      8.    
      9.     class Inner{  
      10.         public void seeOuter(){  
      11.             System.out.println("Outer x is " + x);  
      12.             System.out.println("Inner class reference is " + this);  
      13.             System.out.println("Outer class reference is " + Outer.this);  
      14.         }  
      15.     }  
      16.    
      17.     public static void main(String [] args){  
      18.         Outer o = new Outer();  
      19.         Inner i = o.new Inner();  
      20.         i.seeOuter();  
      21.     }  
      22. }  
      public class Outer {
          private int x = 100;
       
          public void makeInner(){
              Inner in = new Inner();
              in.seeOuter();
          }
       
          class Inner{
              public void seeOuter(){
                  System.out.println("Outer x is " + x);
                  System.out.println("Inner class reference is " + this);
                  System.out.println("Outer class reference is " + Outer.this);
              }
          }
       
          public static void main(String [] args){
          	Outer o = new Outer();
              Inner i = o.new Inner();
              i.seeOuter();
          }
      }
      输出:

      Outer x is 100
      Inner class reference is Outer$Inner@4dfd9726
      Outer class reference is Outer@43ce67ca

       

      3.局部方法内部类(Method-Local Inner Classes)

      1. public class Outer {  
      2.     private String x = "outer";  
      3.    
      4.     public void doStuff() {  
      5.         class MyInner {  
      6.             public void seeOuter() {  
      7.                 System.out.println("x is " + x);  
      8.             }  
      9.         }  
      10.    
      11.         MyInner i = new MyInner();  
      12.         i.seeOuter();  
      13.     }  
      14.    
      15.     public static void main(String[] args) {  
      16.         Outer o = new Outer();  
      17.         o.doStuff();  
      18.     }  
      19. }  
      public class Outer {
      	private String x = "outer";
       
      	public void doStuff() {
      		class MyInner {
      			public void seeOuter() {
      				System.out.println("x is " + x);
      			}
      		}
       
      		MyInner i = new MyInner();
      		i.seeOuter();
      	}
       
      	public static void main(String[] args) {
      		Outer o = new Outer();
      		o.doStuff();
      	}
      }
      输出:x is outer
      1. public class Outer {  
      2.     private static String x = "static outer";  
      3.    
      4.     public static void doStuff() {  
      5.         class MyInner {  
      6.             public void seeOuter() {  
      7.                 System.out.println("x is " + x);  
      8.             }  
      9.         }  
      10.    
      11.         MyInner i = new MyInner();  
      12.         i.seeOuter();  
      13.     }  
      14.    
      15.     public static void main(String[] args) {  
      16.         Outer.doStuff();  
      17.     }  
      18. }  
      public class Outer {
      	private static String x = "static outer";
       
      	public static void doStuff() {
      		class MyInner {
      			public void seeOuter() {
      				System.out.println("x is " + x);
      			}
      		}
       
      		MyInner i = new MyInner();
      		i.seeOuter();
      	}
       
      	public static void main(String[] args) {
      		Outer.doStuff();
      	}
      }
      输出:x is static outer

      4.匿名内部类(Anonymous Inner Classes)

      当您需要给一个GUI应用程序窗口小部件加一个动作监听器时,匿名内部类就会经常被用到。
      1. button.addActionListener(new ActionListener(){  
      2.      public void actionPerformed(ActionEvent e){  
      3.          comp.setText("Button has been clicked");  
      4.      }  
      5. });  

        在Java中有4种不同类型的内部类可以使用。下面给出它们的名称和例子。

        1.静态嵌套类(Static Nested Classes)

        1. class Outer {  
        2.     static class Inner {  
        3.         void go() {  
        4.             System.out.println("Inner class reference is: " + this);  
        5.         }  
        6.     }  
        7. }  
        8.    
        9. public class Test {  
        10.     public static void main(String[] args) {  
        11.         Outer.Inner n = new Outer.Inner();  
        12.         n.go();  
        13.     }  
        14. }  
        class Outer {
        	static class Inner {
        		void go() {
        			System.out.println("Inner class reference is: " + this);
        		}
        	}
        }
         
        public class Test {
        	public static void main(String[] args) {
        		Outer.Inner n = new Outer.Inner();
        		n.go();
        	}
        }
        输出:Inner class reference is: Outer$Inner@19e7ce87

        2.成员内部类(Member Inner Class)

        成员类是特定于实例的。它可以访问所有方法,字段和外部类本身的引用。
        1. public class Outer {  
        2.     private int x = 100;  
        3.    
        4.     public void makeInner(){  
        5.         Inner in = new Inner();  
        6.         in.seeOuter();  
        7.     }  
        8.    
        9.     class Inner{  
        10.         public void seeOuter(){  
        11.             System.out.println("Outer x is " + x);  
        12.             System.out.println("Inner class reference is " + this);  
        13.             System.out.println("Outer class reference is " + Outer.this);  
        14.         }  
        15.     }  
        16.    
        17.     public static void main(String [] args){  
        18.         Outer o = new Outer();  
        19.         Inner i = o.new Inner();  
        20.         i.seeOuter();  
        21.     }  
        22. }  
        public class Outer {
            private int x = 100;
         
            public void makeInner(){
                Inner in = new Inner();
                in.seeOuter();
            }
         
            class Inner{
                public void seeOuter(){
                    System.out.println("Outer x is " + x);
                    System.out.println("Inner class reference is " + this);
                    System.out.println("Outer class reference is " + Outer.this);
                }
            }
         
            public static void main(String [] args){
            	Outer o = new Outer();
                Inner i = o.new Inner();
                i.seeOuter();
            }
        }
        输出:

        Outer x is 100
        Inner class reference is Outer$Inner@4dfd9726
        Outer class reference is Outer@43ce67ca

         

        3.局部方法内部类(Method-Local Inner Classes)

        1. public class Outer {  
        2.     private String x = "outer";  
        3.    
        4.     public void doStuff() {  
        5.         class MyInner {  
        6.             public void seeOuter() {  
        7.                 System.out.println("x is " + x);  
        8.             }  
        9.         }  
        10.    
        11.         MyInner i = new MyInner();  
        12.         i.seeOuter();  
        13.     }  
        14.    
        15.     public static void main(String[] args) {  
        16.         Outer o = new Outer();  
        17.         o.doStuff();  
        18.     }  
        19. }  
        public class Outer {
        	private String x = "outer";
         
        	public void doStuff() {
        		class MyInner {
        			public void seeOuter() {
        				System.out.println("x is " + x);
        			}
        		}
         
        		MyInner i = new MyInner();
        		i.seeOuter();
        	}
         
        	public static void main(String[] args) {
        		Outer o = new Outer();
        		o.doStuff();
        	}
        }
        输出:x is outer
        1. public class Outer {  
        2.     private static String x = "static outer";  
        3.    
        4.     public static void doStuff() {  
        5.         class MyInner {  
        6.             public void seeOuter() {  
        7.                 System.out.println("x is " + x);  
        8.             }  
        9.         }  
        10.    
        11.         MyInner i = new MyInner();  
        12.         i.seeOuter();  
        13.     }  
        14.    
        15.     public static void main(String[] args) {  
        16.         Outer.doStuff();  
        17.     }  
        18. }  
        public class Outer {
        	private static String x = "static outer";
         
        	public static void doStuff() {
        		class MyInner {
        			public void seeOuter() {
        				System.out.println("x is " + x);
        			}
        		}
         
        		MyInner i = new MyInner();
        		i.seeOuter();
        	}
         
        	public static void main(String[] args) {
        		Outer.doStuff();
        	}
        }
        输出:x is static outer

        4.匿名内部类(Anonymous Inner Classes)

        当您需要给一个GUI应用程序窗口小部件加一个动作监听器时,匿名内部类就会经常被用到。
        1. button.addActionListener(new ActionListener(){  
        2.      public void actionPerformed(ActionEvent e){  
        3.          comp.setText("Button has been clicked");  
        4.      }  
        5. });  
  • 相关阅读:
    Redis Sentinel 哨兵模式
    Redis 读写分离
    Redis 分布式锁实现
    Redis 缓存的收益和成本
    Redis 实现排行榜
    Spring Boot 使用 Cache 缓存
    Spring Boot 整合 Redis
    Spring Boot 使用阿里巴巴 Druid 数据源
    Spring Boot 整合 JWT
    B1003
  • 原文地址:https://www.cnblogs.com/-chaoming/p/6866542.html
Copyright © 2011-2022 走看看