---------------------android培训、java培训、java学习型技术博客、期待与您交流! -------------------
final修饰符可修饰类、方法和变量,final表示不可改变
作用:
1、修饰类
final修饰的类不能被子类继承。
如下面这段代码所示:
final class Test { //用final修饰的类,叫做最终类
}
class Demo extends Test{ //不能继承
}
2、修饰变量
一个变量可以声明为final,这样做的目的是阻止它的内容被修改。
用final修饰的变量,称为常量,不能更改
public class Demo {
public static void main(String[] args){
final int x = 1; //严格来说,用final修饰的变量为常量,要用大写字母来表示
x = 3;
}
}
上面这段代码,编译的时候,会提醒:无法为最终变量x分配值。
3、修饰方法
用final修饰的方法不能被复写。
class Test{
final void speak(){
System.out.println("这是被final修饰的方法");
}
}
class Demo extends Test {
void speak(){
System.out.println("复写方法");
}
}
上面这段代码中,父类定义了一个用final修饰的方法,子类继承这个类的时候,就无法复写这个方法
abstract 用于修饰类和方法,用 abstract 修饰的类和方法称为抽象类和抽象方法,其规则如下:
1、用abstract修饰的类为抽象类,不能被示例化。
public class Demo {
public static void main(String[] args){
Test t = new Test();
}
}
abstract class Test {
} //上面这段代码编译的结果是:编译错误,提示Test是抽象的,无法实例化
2、构造方法和static方法不能是抽象的。
class Demo {
abstract Demo(){}
} //构造函数不能用abstract修饰
class Demo {
abstract static void speak(){
System.out.println("输出");
}
} //static方法不能用abstract修饰
3、父类的抽象方法往往在子类中实现,抽象类可以具有指向子类对象的引用。
abstract class Test {
abstract void speak();
}
class Demo extends Test {
void speak(){ //子类复写父类的方法
System.out.println("这是子类中方法");
}
}
抽象类和一般类没有太大的不同,该怎么描述事物就如何描述,只不过,该事物出现了一些看不懂的东西
这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义主体,通过抽象方法来表示。
抽象类中,可以没有抽象方法,作用仅是为了不让创建该类的示例。
抽象类中可以有抽象方法,也可以有普通方法。