高级java

高级java

修饰符:
static修饰符
static修饰符所修饰的内容属于类不属于对象,他被所有由这个类产生的对象共享
static所修饰的内容在执行类加载的时候就会被加载到内存中,所以类加载完成后静态的内容在内存中就已经存在了,而且类加载只会执行一次,静态的内容也只会被加载一次。
静态属性:
类加载的时候静态属性就会加载,jvm会根据数据类型给初始值。
静态方法
类加载的时候静态方法就会加载因此静态方法中是不能调用非静态的内容,静态加载的时候对象还没开始构建,this super 也不能在静态方法中使用
静态代码块(就是在代码块前面加了static):
类加载的时候静态代码块会被jvm执行从上往下一次执行,可以在静态代码块中初始化静态的属性
代码块和静态代码块的功能:

public calss Test{
		public static String namel
		public int age;
		static{
			name="lisi";
		}
		static {
			name="tom";
		}
		//代码块在构建对象的时候会被调用,子类显示初始化数据的时间点和代码块之间的关系,继承中
		{}
	}

创建对象的过程:
A extends B:
1,类加载,构建对象
2.jvm根据数据类型给属性初始值
3.调用父类的代码块构造器(name)
4.将子类显示初始化的属性值替换掉jvm给的默认值
5.调用子类的代码块(name2)
6.调用子类的构造器
静态导入
如果在一个类中我们需要大量的使用静态方法很多次,一般情况下可以使用类名.方法名,或者我们可以使用静态导入
import static 类的权限定名.静态方法名
final修饰符
类:使用final修饰的类不能被继承
属性:使用final修饰的属性被称为常量,使用之前必须显示化进行赋值,一旦赋值就不能做修改
方法:可以被继承使用,但不能被继承

abstract修饰符
类:使用abstract修饰的类被称为抽象类,抽象类不能构建对象
抽象类中可以有具体的方法,也可以有抽象的方法,也可不包含抽象方法
抽象类中有自己的构造器,虽然不能直接构建对象,但是这个构造器可以将来被子类调用,用来初始化子类从父类中继承的属性
方法
使用abstract修饰的方式称为抽象方法,抽象方法只有方法的声明没有方法体
抽象方法必须位于抽象类中,但是抽象类中可以没有抽象方法
抽象方法不能使用static修饰
抽象方法不能使用final修饰
重写:父类中的抽象方法可以被子类重写成抽象方法或非抽象方法,父类中的非抽象方法可以被子类重写为抽象方法
抽象类存在的目的就是为了让别的类继承:
继承:Java只能做单继承
接口
使用interface声明的类叫做接口
接口中可以有属性,但是所有的属性都是静态常量,即使你不使用final static,默认情况下jvm也会帮我们加上
在这里插入图片描述
接口中可以有方法,但是所有的方法都是抽象方法
接口没有构造器,使用接口不能直接构建对象,为了让其他的类实现接口中的抽象方法
一个类是可以同时实现多个接口中的方法,做实现的时候可以选择让实现类的接口中所有的方法都实现,或者是部分实现,如果是部分实现那么这个实现类需要被抽象声明

Java中的接口是可以继承其他接口的,而且可以多继承,接口不能直接继承Java中的抽象类。
在这里插入图片描述
内部类
匿名内部类:
1.位置:类的内部方法的外部,也可以在方法的内部,可以使用static修饰也可以不使用static修饰
2.匿名内部类实际上在构建子类或者是接口的实现类的时候使用的最多。
父类类型/接口类型 对象名 = new 父类类型/接口类型(){
重写或者实现接口中的方法
};
静态内部类:
1.类的内部方法的外部使用static修饰
2.内部类中可以访问外部类的静态的内容,访问外部类中的非静态内容需要构建外部类的对象
3.外部类中不能访问内部类中的内容,如果想访问,内部类中静态的内容需要使用内部类.属性名/方法名
4.外部类.内部类 变量名 = new 外部类.内部类();
在这里插入图片描述
成员内部类:
1.类的内部方法的外部,不使用static修饰符修饰,在这个内部类可以声明非静态的属性和方法
2.成员内部类可以直接访问他所在的外部类中静态和非静态的所有的内容
3.外部类中不能直接访问内部类中属性和方法,如果需要,那么需要构建内部类的对象来进行访问
4.外部类.内部类 对象名 = new 外部类().new 内部类();
局部内部类:
1.方法的内部 局部内部类不能使用范围修饰符也不能使用static修饰符,方法内部允许定义非静态的属性和方法
2.在实例方法中声明的局部内部类访问外部类中所有的静态和非静态的内容,同时也可以访问它所在的方法使用final所修饰的局部变量
3.外部类访问不到局部内部类
4.只有在这个局部内部类所在的方法中构建这个内部类的对象
局部内部类类名 对象名= new 局部内部类类名();

1.内部出现的位置
2.内部类能够直接访问外部类中的什么内容
3.外部类直接访问内部类的什么内容
4.内部类对象的构建方式
包装器类型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章