final关键字的用法:
1、final关键字修饰变量(成员变量和局部变量的区别,引用变量和基本数据类型的区别)。
2、final可以修饰方法
3、final修饰类
其中final修饰方法跟继承有关,而且不能被子类重写;
fianl修身类是不能被继承的;而且要注意:fianl修饰基本数据类型的成员变量必须赋值,否则编译器报错。并且fianl修饰的成员变量一旦赋值就不可改变。
例如:public final class Retangle{
public final void test1{
}
}
// 注意:这里程序会报错,因为被fianl修饰的类,不允许被继承。
public class Cube extends Retangle{
// 这里也会报错,fianl修饰的方法在子类中不能被重写。
public void test1{}
}
abstract 关键字:
abstract要注意一下几点:
1.对于方法来说,加了abstract就没有意义了。
2.有抽象方法的类一定是抽象类,抽象类不一定有抽象方法。然而方法中用了abstract,那本身就成了抽象类。
例如:public abstract class Shape{} // 表示抽象类。
3.抽象类不允许被实例化。
4.抽象类有构造方法,子类可以通过shper调用父类的构造方法,对从父类的属性进行初始化。
5.抽象关键字不可以与fianl关键字一起使用,因为abstract要求子类一定要重写父类的方法,但fianl不允许重写。
6.抽象关键字不恶意和private关键字一起使用,因为private是私有的,不能被继承的内容代表根本不存在方法重写,因此不能一起使用。
7.关键字不能与static一起使用,static是静态修饰符,代表不需要实例化对象,直接类名就可以调用,如果是抽象方法,没有方法实现调用方法会出错,所以不能一起使用。
8.构造方法不允许被继承,也没有重写,不能用abstract修饰。
注意:用abstract修饰的方法没有方法执行体,因为不行有任何内容;而且abstract修饰的方法在子类中必须重写,抽象类不能够被实例化,可子类创建对象进行调用。
例如: abstract void teat1();// 用abstract修饰的方法没有方法执行体。
public abstract class Shape{
int x;
int y;
public void tset2();
}
public class Cycle extends Shape{
//抽象方法。要被子类重写才有意义 // 这里重写了父类的方法
void test2() {
// TODO Auto-generated method stub
System.out.println("我是子类重写了抽象方法");
}}
public static void main(String[] args){
//抽象类 shape不能够被实例化
//Shape s = new Shape();
Cycle c = new Cycle();
c.x = 20; c.test2();
}