Java匹马行天下之JavaSE核心技术——面向对象 (2)

final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

final修饰变量:

final 表示"最后的、最终的"含义,变量一旦赋值后,不能被重新赋值。被 final 修饰的实例变量必须显式指定初始值。

final 修饰符通常和 static 修饰符一起使用来创建类常量。

//实例
public class Test{
  final int value = 10;
  // 下面是声明常量的实例
  public static final int BOXWIDTH = 6;
  static final String TITLE = "Manager";

  public void changeValue(){
     value = 12; //将输出一个错误
  }
}

final修饰方法:

类中的 final 方法可以被子类继承,但是不能被子类修改。

声明 final 方法的主要目的是防止该方法的内容被修改。

如下所示,使用 final 修饰符声明方法:

public class Test{
    public final void changeName(){
       // 方法体
    }
}

final修饰类:

final 类不能被继承,没有类能够继承 final 类的任何特性。

//实例
public final class Test {
   // 类体
}

注意:

当final修饰类时,当前类不能被继承;

当final修饰方法时,该方法不能被重写;

当final修饰变量时,变量的值不能被修改,即为常量;

abstract修饰符,用来创建抽象类和抽象方法。
抽象类:

抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。

一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。

抽象类可以包含抽象方法和非抽象方法。

规则:

含有抽象方法的类,一定是抽象类;

抽象类中可以声明成员变量、常量、成员方法、抽象方法,抽象类中不一定要有抽象方法;

抽象类不能被实例化;

抽象类可以被继承;

可以通过两种方式获得抽象类对象:父类引用指向子类对象、匿名内部类;

子类必须重写抽象父类的所有抽象方法,或者是把子类也定义为抽象类;

如果一个类继承的抽象父类还有上级抽象父类,那么子类中需要要重写所有抽象父类的所有抽象方法;

抽象类也可以继承非抽象类,同时继承了父类的所有非私有的属性和方法;

实例:

abstract class Caravan{
   private double price;
   private String model;
   private String year;
   public abstract void goFast(); //抽象方法
   public abstract void changeColor();
}

抽象方法

抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。

抽象方法不能被声明成 final 和 static。

任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。

如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。
*抽象方法的声明以分号结尾,例如:public abstract sample();

实例:

public abstract class SuperClass{
    abstract void m(); //抽象方法
}

class SubClass extends SuperClass{
     //实现抽象方法
      void m(){
          .........
      }
}

synchronizedvolatile 修饰符,主要用于线程的编程。

synchronized 修饰符

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxfws.html