11.1、抽象类
11.1.1、抽象类概念
用abstract关键字修饰的类,就叫抽象类。
11.1.2、抽象方法概念
用abstract关键字修饰的方法,就叫抽象方法
11.1.3、抽象类的特点
1、抽象类可以没有抽象方法
public abstract class TestAbstractClass {
}
2、抽象类可以有普通方法
public abstract class TestAbstractClass {
public int f() {
return 0;
}
}
3、定义了抽象方法的类,该类必须是抽象类
下面是错误代码,编译不通过。 。
public class NormalClass { //普通类不能声明抽象方法
public abstract int f() ;
}
4、抽象类可以被继承,不能被实现。必须重写抽象方法
也就是不能使用implements关键字,而是使用extends关键字。
public abstract class TestAbstractClass {
public abstract int f();
public static void test() {
return;
}
}
public class NormalClass extends TestAbstractClass{
@Override
public int f() {
// TODO Auto-generated method stub
return 0;
}
}
5、抽象类不能被实例化
11.1.4、抽象方法的特点
1、抽象方法只能声明,不能有方法体
2、声明了抽象方法的类,该类必须是抽象类
11.2、最终类
11.2.1、最终类的概念
用final关键字修饰的类,就叫最终类。
11.2.2、最终方法的概念
用final关键字修饰的方法,就叫最终方法。
11.2.3、最终类的特点
1、最终类可以没有最终方法
public class TestFinalClass {
}
2、最终类可以有普通方法
public class TestFinalClass {
public final int f() {
return 0;
}
public int b() {
return 0;
}
}
3、最终类不可以被继承,也不能被实现
也就是不能使用implements和extends关键字。
4、最终类可以被实例化
11.2.4、最终方法的特点
1、最终方法不能被重写
2、声明了最终方法的类,该类可以是最终类也可以是非最终类
11.2.5、常量的概念
用final修饰的变量,就叫常量。
11.2.6、常量的特点
1、常量一旦初始化,就不能再改变值
2、final可以修饰局部变量和成员变量
public class testClass {
public static int a;
public final static int b=2;
public final int c=22;
public static void main(String[] args) {
System.out.println(a); //0
}
}
3、final修饰的成员变量必须初始化
4、final修饰的成员变量可以不进行初始化,要使用就必须初始化。
public class testClass {
public int bb() {
final int b;
// System.out.println(b); //要想使用变量b,就必须初始化
return 2;
}
}