类的高级概念

1.访问修饰符
public 该类或非该类均可访问
private 只有该类可以访问
protected 该类及其子类的成员可以访问,同一个包中的类也可以访问
默认 相同数据包中的类可以访问
2.封装
访问修饰符的作用是限制属性和方法被使用和调用的范围。即指明了类
的数据成员和方法的能够被访问的程度。

如果一个类的组件(数据成员或方法)被声明为私有类型(private),
则任何该类外部的方法是无法访问该组件的。
封装的好处 类的成员变量可以成为只读或者只写的。列如:
salesperson类中的成员变量id是只读的,在salesperson对象实例化
后,id成员变量就无法改变了。
类可以对存储在其成员变量中的内容有一个整体的控制。
类的用户不需要知道类是如何存储数据的。类可以改变一个成员变量
的数据类型,而类的用户不需要改变其代码。
3. //外部类
public class outclass{
private int a = 10;//成员变量
public class Innerclass1{
//1.可以有访问修饰符
2.class文件的名字。外部类类名$内部类类名.class
3.就是一个完整独立的类
4.在本方法内可以产生对象,然后使用
}
public void test(){
int b = 10;//局部变量
//局部内部类 1.不能有访问修饰符 2.class文件的名字:外部类类名$序号+内部类的类名
class Innerclass2{ .class
3.就是一个完整独立的类
4.在本类的任意方法中都可以new出来,但是在第三方
类必须用外部类对象,new的方式产生内部类对象。

}
4.static
1.与对象无关。与类有关
2.全类共享一个值
3.预加载
static的方法不能操作非static的任何属性和方法
从实现上来说,static修饰的是被首先加载的,此时非static的还没有
加载到内存,所以static不能修饰构造,因为凡是static的都与对象无
关,而构造是专门用来产生对象的。

静态初始化块
在类加载的时候自动执行,只会执行一次,使用量很高,通常会把一程
序运行前的准备工作放在这里,让其加载期就完成准备。

实例化初始块
在产生对象的时候自动执行,在父类的构造方法之后,本类的构造方法
执行之前,使用量很少,因为完全可以把代码就写到本类构造方法前几
行。
静态内部类
在本类中任意方法中都可以new出来,在第三方类中要new出来,无需产
生外部类对象,只需外部类类名.的方式就可以了。
匿名内部类---局部内部类的特列
由于没有类名,所以是在产生对象的时候用语句告诉jvm它的结构
只能用一次,注意分号,括号的位置。

原文地址:https://www.cnblogs.com/wanglei718/p/5215073.html