static、abstract、final

static

静态(static)可以修饰属性和方法
静态成员是全类所有对象共享的成员
全类只有一份
可以直接通过类目访问

静态方法

  • 允许直接访问静态成员
  • 不能直接访问非静态成员
  • 不允许使用this或super关键字
  • 可以继承,不能覆盖,没有多态

静态属性、静态代码块、实例属性、动态代码块、构造方法

class Super {
	static String SUPER_FIELD = "父类静态属性";
	static {
		System.out.println(SUPER_FIELD);
		System.out.println("父类静态代码块");
	}
	String superField = "父类实例属性";
	{
		System.out.println(superField);
		System.out.println("父类动态代码块");
	}
	public Super(){
		System.out.println("父类构造器");
	}
}

class Sub extends Super{
	static String SUB_FIELD = "子类静态属性";
	static {
		System.out.println(SUB_FIELD);
		System.out.println("子类静态代码块");
	}
	String subField = "子类实例属性";
	{
		System.out.println(subField);
		System.out.println("子类动态代码块");
	}
	public Sub(){
		System.out.println("子类构造器");
	}
}


/**
*运行结果
*父类静态属性
*父类静态代码块
*子类静态属性
*子类静态代码块
*父类实例属性
*父类动态代码块
*父类构造方法
*子类实例属性
*子类动态代码块
*子类构造方法
*/

abstract

  • 修饰类:不能被new对象,但可以引用
  • 修饰方法:只声明,不实现。(前提是在抽象类里面)
  • 抽象类中不一定有抽象方法,但是抽象方法一定是抽象类
  • 子类继承抽象类,一种情况子类实现父类的抽象方法,另一种子类也是抽象类

final

final修饰的内容,都是最后的,不可更改的
final可修饰:类、方法、变量
final修饰类,该类不可继承
final修饰方法,此方法不能被覆盖
final修饰变量,此变量不能被改变(无初始值、只允许赋值一次)

你可能感兴趣的:(JavaEE)