内部类
将一个类定义在另一个给类里面或者方法里面,这样的类就被称为内部类。
内部类可以分为四种:成员内部类、局部内部类、匿名内部类。
成员内部类
1 class C{ 2 class D{ 3 4 } 5 }
注:
员内部类可以无条件访问外部类的属性和方法,但是外部类想要访问内部类属性或方法时,必须要创建一个内部类对象,然后通过该对象访问内部类的属性或方法
访问方式
外部类名.内部类名 变量名 = new 外部类名().new 内部类名();
局部内部类
局部内部类存在于方法中。
他和成员内部类的区别在于局部内部类的访问权限仅限于方法或作用域内。
1 class 外部类 { 2 修饰符 返回值类型 方法名(参数) { 3 class 内部类 { 4 //其他代码 5 } 6 } 7 }
访问方式
在外部类方法中,创建内部类对象,进行访问
匿名内部类
public class Demo { public static void main(String[] args) { driveCar(new Car(){ @Override public void drive() { System.out.println("驾驶着BMW汽车"); } }); } public static void driveCar(Car car){ car.drive(); } } interface Car { void drive(); }
匿名内部类没有构造方法。也是唯一没有构造方法的内部类。匿名内部类和局部内部类只能访问外部类的final变量。
代码块
局部代码块
1 class Demo01{ 2 public static void main(String[] args) { 3 { 4 System.out.println("普通代码块"); 5 } 6 System.out.println("代码块之外"); 7 } 8 }
静态代码块
1 public class Person { 2 private String name; 3 private int age; 4 //静态代码块 5 static{ 6 System.out.println("静态代码块执行了"); 7 } 8 }
它优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行。
该类不管创建多少对象,静态代码块只执行一次。
可用于给静态变量赋值,用来给类进行初始化。
访问修饰符权限
java的四个关键字:public、protected、default、private(他们决定了紧跟其后被定义的东西可以被谁使用)
适用范围<访问权限范围越小,安全性越高>
访问权限 类 包 子类 其他包
public ∨ ∨ ∨ ∨ (对任何人都是可用的)
protect ∨ ∨ ∨ × (继承的类可以访问以及和private一样的权限)
default ∨ ∨ × × (包访问权限,即在整个包内均可被访问)
private ∨ × × × (除类型创建者和类型的内部方法之外的任何人都不能访问的元素)
原文地址:https://www.cnblogs.com/zhai113/p/11597017.html