zoukankan      html  css  js  c++  java
  • -3


    1.内部类分为:实例内部类,静态内部类,局部内部类,匿名内部类
    外部类仅能被public或者默认权限修饰
    2.实例内部类:

    • 此内部类不可被static修饰,因为static属于类,而实例内部类属于对象
    • 实例内部类是可以访问外部类的成员,外部类的成员无法访问此内部类的成员
    • 在main方法中调用实例内部类时必须先创建外部类对象,在创建内部类对象
      3.静态内部类:
    • 静态内部类因为由static修饰,属于类,所以可以不用创建外部类对象,直接外部类.内部类调用
    • 静态内部类可以拥有静态和非静态成员
    • 静态内部类可以访问外部类的成员,如何访问?
    class test{
    	static String N = "1";
    	int a;
    	static class cat{
    		static String N = "2";
    		void name() {
    //变量拥有就近访问原则
    			System.out.println(N);
    			System.out.println(this.N);//访问此类中的变量N
    			//对外部类静态成员的访问
    			System.out.println(test.N);
    			System.out.println(new test().N);
    			//对外部类非静态成员的访问
    			System.out.println(new test().a);
    		}
    	}
    }
    
    public class insideclass {
    
    	public static void main(String[] args) {
    		test.cat c = new test.cat();
    		c.name();
    	}
    }
    

    4.局部内部类:定义在方法中的类叫局部内部类
    局部内部类中的成员变量默认是用final修饰的
    5.匿名内部类:没有名字的局部内部类

    • 必须有父类或者接口,并且没有构造器
    • new 父类/接口
    interface iusb{
    	void swapdata();
    }
    
    class motherboard{
    	void plugin(iusb i) {
    		i.swapdata();
    	}
    	
    }
    class keyboard implements iusb{
    	public void swapdata() {
    		System.out.println("键盘打字");
    	}
    }
    
    class mouse implements iusb{
    	public void swapdata() {
    		System.out.println("移动鼠标");
    	}
    }
    public class iusbable3{
    public static void main(String[] args) {
    	motherboard a = new motherboard();
    //用到了匿名内部类
    	a.plugin(new iusb() {
    		public void swapdata() {
    			System.out.println("鼠标移动");
    			System.out.println("键盘打字");
    		}
    	});
    	
    }
    	
    }
    

    6.枚举
    枚举就是一个特殊的类,多个常量对象的集合

    案例最终
    package _01;
    enum Weekday{
    	MONDAY,TUESDAY,WENDESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY;
    }
    class Student{
    	private Weekday week;
    
    	public Weekday getWeek() {
    		return week;
    	}
    
    	public void setWeek(Weekday week) {
    		this.week = week;
    	}
    
    	
    }
    public class ENUM {
    	public static void main(String[] args) {
    		Student s = new Student();
    		s.setWeek(Weekday.MONDAY);
    		Weekday res = s.getWeek();
    		if(res == Weekday.SATURDAY || res == Weekday.SUNDAY) {
    			System.out.println("放假");
    		}else
    			System.out.println("上学");
    
    		
    	}
    }
    
  • 相关阅读:
    Sql server Always On 读写分离配置方法
    MSSQL AlwaysOn中的“主角色中的连接”和“可读辅助副本”
    Windows Server 2019 Active Directory (AD域)时间不同步的解决方法
    windows server 2008 R2 域中用组策略隐藏指定磁盘驱动器(盘符)
    pg数据库优化
    Qlik
    如何查看数据库特别慢
    针对数量的null值最好要做变0处理
    pg如何实现月份的加减
    sql
  • 原文地址:https://www.cnblogs.com/-zero/p/12253538.html
Copyright © 2011-2022 走看看