赞
踩
final是java语言中的一个关键字
final表示最终的,不可改变的。
final可以修饰变量以及方法,还有类等。
- final class A{
- //A 是没有子孙的
- }
- class B extends A{
- //错误的, 无法从最终类A进行继承
- //B类继承A类 相当于对A类功能进行扩展
- //如果不希望别人对A类进行扩展,可以给A类加final关键字,如String类
- }
final修饰的实例变量(必须手动赋值)
- /*
- 一般情况下
- 实例变量如果还没有赋值的话,系统会赋默认值
-
- final 修饰实例变量:
- 系统不负责赋默认值,要求程序员必须手动赋值,只能赋一次,
- 这个手动赋值,在变量后面赋值可以,在构造方法中赋值也可以
-
-
-
- */
- public class FinalTest02(){
- public static void main(String[]args){
-
- }
- }
-
-
- class User{
- //实例变量
-
- //错误: 变量age未在默认构造器中初始化
- //final int age;
- final int age=10;
-
- //在构造方法中赋值 weight只赋一次值
- final double weight;
- //构造方法
- public User(){
- this.weight=80;
- //系统赋默认值在这个时候,final修饰后,系统不会赋值
- //this.weight=0;
-
- }
-
-
- }
- public class FinalTest01{
- public static void main(String[]args){
- //局部变量
- int i=100;
- //重新赋值, 没问题
- i=200;
-
- // 再定义一个局部变量
- final int k=100;
- //重新赋值
- //错误: 无法为最终变量k分配值
- // k=300;
- }
- }
- class C{
- public final void doSome(){
- System.out.println("C's doSome...")
- }
- }
- class D extends C{
- //错误,无法覆盖
- /* public void doSome(){
- System.out.println("D's doSome...")
- } */
- }
给final修饰的变量赋值的方法:
1.代码块
2.显示赋值
3.构造器
抽象类:
在面向对象的概念中,所有对象都是通过类来描述的,但是反过来,并不是多又累都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘具体的对象,这样的类就是抽象类。
在java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法。而抽象方法不用给出具体的实现体。即没有{...}代码块。
定义抽象类和抽象方法:
- public abstract class Shape{//定义一个Shape抽象类
-
- public String name;//成员变量
- public abstract void draw();//抽象方法
-
- private abstract void method();//报错
-
- void calArea(){//普通方法
- System.out.println("计算面积!");
- }
-
- public Shape(){//无参构造方法
- System.out.println("Shape构造方法!");
- }
-
- public Shape(String name) {//有参构造方法
- this.name = name;
- }
- }
注意:abstract不能修饰static,final,private修饰的方法和final修饰的类。
抽象类的子类需要将父类中的抽象方法全部重写或定义为抽象类。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。