Javaのオブジェクト指向15_finalキーワード

コンセプト1.final

表示されますが、コードの再利用性を向上させ、開発を容易にするために、継承されました。しかし、また、問題を抱えているだろう、完成説明した後、私はしたくない一部のクラスが継承されるように、またはいくつかのクラスメソッド機能の一部が固定され、サブクラスのオーバーライドを望んでいません。サブクラスは、これらの特別なクラス、書き換えることができる方法を継承する場合しかし、その後、どのようにそれを解決するには?

上記の問題を解決するためには、不変の、最終のキーワード最後の、最終平均を使用する必要があります。final修飾子は、クラス、クラス属性とメソッドとローカル変数を飾るために使用することができますが、コンストラクタを変更することはできません。

2.final機能

  1. 最終修正クラスは継承できませんが、他のクラスを継承することができます。
class AA {}
final class BB extends AA {} // final修饰类可以继承其他类
class CC extends BB {} // 编译错误,final修饰类不可以被继承
  1. 最終的な修正方法をカバーすることはできないが、この方法は、最終的なサブクラスによって修飾することができます。
class AA {
	final public void show1() {}
	void public show2() {}
}
class BB extends AA {
	final public void show1() {} // 编译错误,final修饰的方法不可以被覆盖
	final public void show2() {} // 父类中没有被final修饰方法,子类覆盖后可以加final
}
  1. 最終的に修正される変数は定数と呼ばれ、これらの変数は一度だけ割り当てることができます。

    最終修正のメンバ変数と静的変数は、あなたがディスプレイの初期値を設定する必要があり、JVMはデフォルト値を設定しません。

    単語の間にアンダースコア分割して、より意味のある単語が接続されている、すべて大文字、:一定の命名規則。

public class FinalDemo {
	// 成员变量必须显示的设置初始值,JVM不会不会设置默认值。
	final String USER_NAME = "xiaoming";
	public static void main(String[] args) {
		// 多个有意义的单词连接,所有字符大写,单词之间用下划线分割.
		final int MAX_VALUE = Integer.MAX_VALUE; 
		// 编译错误,final 修饰的变量称为常量,这些变量只能赋值一次。
		MAX_VALUE = 120;
	}
}
  1. 参照データ型の変数の最終的な変更は、可変アドレスを変更することはできないが、ヒープにオブジェクト点の特性を変更することができます。
class Person {
	String name = "小明";
}
public class FinalDemo {
	public static void main(String[] args) {
		final Person p = new Person();
		p = new FinalDemo(); // 编译错误,地址值不能更改
		p.name = "小花"; // 地址内的对象属性值可以修改
	}
}

PS:最新の無料のマニュアルと教育ビデオの場合は、QQグループ(627407545)を追加してください受けます。

公開された55元の記事 ウォンの賞賛0 ビュー793

おすすめ

転載: blog.csdn.net/zhoujunfeng121/article/details/104600434