类的高级概念
首先,再次巩固了访问修饰符
public 公共的,公开的。谁都可以看见,可以访问,可以修改,使用频率较高
private 私有的,除了在我自己的类中,谁都不可以来访问。但是我可以选择性的提供get和set方法。也是最常使用的。
protected 这是受保护的。只有和我有关系的,比如在我所在的包中的类,或者是我的子类,就可以访问我。
默认 只有在我所在的包中才能访问
封装
封装具有隐蔽性以及可以进行范围的控制,比如方法就是封装的一个体现
静态 关键字static
static 修饰之后,都会成为预加载,只要JVM开始加载的时候就会在static修饰的所有内容放在数据段中的 某个区域中
只要加了static之后,属性称为类属性,不会在和对象有关系,可以直接使用类名.属性名就可以访问了,并且所有的类都共享一个。
如果方法加了static之后,则该方法不能访问非static的属性和方法了。反之,如果是一个非static 的方法可以调用static‘的属性和方法。 一般不用static修饰方法,常用于修饰工具类的工具方法。并且static不能修饰构造方法。
实例初始化块
格式为 { },在产生对象的时候执行。在父类的构造方法之后,在本类的构造方法之前。一般很少用使用,因为可以捡括号里的语句直接写在构造方法里面。
静态初始化块
格式为 static{ }
只会执行一次,在类加载的时候便自动执行,所以最先被加载。通常将程序运行之前的准备工作放在其中。
内部类
内部类是在类中再次写一个类,可以无限的循环下去。可以在内部类中写任何在类中可以写的东西
可以分为成员内部类和局部内部类。
成员内部类:1 有访问修饰符 2 class文件名为外部类类名$内部类类名.class 3 在本类任意的非static方法中都可 以new出来,但是如果在其他类中,必须要用外部类对象.new 的方式产生内部类对象
静态内部类 是成员内部类的一个特列,成员内部类的特点它都有。但是如果在其他类中不需要产生一个对象,可以直接使用外部类类名.的方式来访问
局部内部类: 1 没有访问修饰符 2class文件名为 外部类类名$+ 序号 + 内部类类名.class
匿名内部类 是局部内部类的特列。格式为 new 类名{ }; 可以用于补充该对象中的属性和方法,因为没有类名,只能用一次,类文件名为:外部类名$序号.class。