• Java 内部类


    Java内部类,定义在内部的类称为内部类。

    分为:静态内部类,成员内部类,局部内部类,匿名内部类

    一、静态内部类

    public class StaticInnerClassTest {
    
        public static void main(String[] args) {
            StaticInner.Inner inner = new StaticInner.Inner();
            inner.test();
        }
    }
    
    
     class StaticInner{
    
        private static int a = 4;
        
        
        public static class Inner {
            
            public void test(){
                System.out.println(a);
            } 
        }
        
    }

    只能访问外部类的静态成员变量与静态方法,生成静态内部类对象的方式为

    OuterClass.Inner inner = new OuterClass.Inner()

    二、成员内部类

    class MemberInner{
    	
    	private int a = 4;
    	
    	public class Inner2{
    		
    		private int a = 5;
    		
    		public void doSomething(){
    			System.out.println("hello world");
    		}
    		
    		public void printA(){
    			//访问外部类 a = 4
    			System.out.println(MemberInner.this.a);
    		}
    	}
    }
    public class MemberInnerClassTest {
    
    	public static void main(String[] args) {
    		MemberInner.Inner2 inner2 = new MemberInner().new Inner2();
    		inner2.doSomething();
    	}
    }
    

      

      

    三、局部内部类

    定义在方法中,只能访问方法中声明的final类型变量

    class LocalInner{
    	
    	public void doSomeThing() {
    		
    		class Inner3{
    			
    			public void test(){
    				System.out.println("hello world");
    			}
    		}
    		
    		//方法中定义的类,在该方法中使用
    		new Inner3().test();
    	}
    	
    }
    public class LocalInnerClassTest {
    	public static void main(String[] args) {
    		LocalInner inner = new LocalInner();
    		inner.doSomeThing();
    	}
    }
    

      

    四、匿名内部类

    匿名内部类会隐试的继承一个父类或者实现一个接口

    1、匿名内部类重写toLocaleString方法

    public class AnnoymousInnserClassTest {
    
    	
    	public String get(Date date){
    		return date.toLocaleString();
    	}
    	
    	public static void main(String[] args) {
    		AnnoymousInnserClassTest test = new AnnoymousInnserClassTest();
    		//String str = test.get(new Date());
    
    		String str = test.get(new Date(){	
    			public String toLocaleString() {
    				return "Hello world";
    			}
    		});
    		System.out.println(str);
    		
    	}
    	
    }
    

      打印结果:

    2、使用Swing的匿名内部类

    内部类Code

    public class SwingTest {
    	public static void main(String[] args) {
    		JFrame frame = new JFrame("JFRame");
    		JButton button = new JButton("click");
    		button.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				System.out.println("hello world");
    				
    			}
    		});
    		frame.setSize(200, 200);
    		frame.getContentPane().add(button);
    		frame.setVisible(true);
    	}
    }
    

      

  • 相关阅读:
    caffe的python接口学习(5):生成deploy文件
    Flutter -------- 新手 WanAndroid 项目练习
    android -------- GifView 显示gif图片
    android -------- java.net.UnknownServiceException
    Flutter ------- WebView加载网页
    Flutter -------- 解析JSON数据
    Flutter -------- Http库 网络请求封装(HttpController)
    android ------ 实现高德定位并获取相应信息 ( 最新版高德SDK 和 Android SDK版本)
    Flutter -------- dio网络请求
    Flutter -------- Http库实现网络请求
  • 原文地址:https://www.cnblogs.com/linlf03/p/10853667.html
Copyright © 2020-2023  润新知