9、3つの修飾子

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/weixin_45536396/article/details/102736085

三の修飾子

、静的静的

あなたは、プロパティ、メソッドを変更することができます

1.静的プロパティ修飾静的プロパティ(クラス変数)

各メンバ変数は、別々の空間のそれぞれに保持された物体であり、一方的オブジェクトが他のオブジェクトに影響を与えない変更します

ここに画像を挿入説明

a)の構文を定義

属性名のアクセス修飾子の静的データ・タイプ。

定義された場所:クラス、メソッドの外に定義され

注:アクセス修飾子静止位置と交換可能。

b)の特徴

静的プロパティは全体クラスで空間を共有している、任意のオブジェクトは、他に、その値を変更します

変化に追従するのが好きです。(すべてのクラスのシェア:シェアを作成し、このクラスのすべてのオブジェクトに基づいて)

ここに画像を挿入説明

c)のアクセス方法

1.オブジェクト名の静的プロパティ名;.(推奨しません)
2.クラスの静的プロパティ名の名前に。

2.静的修飾法静的メソッド(クラスメソッド)

a)の定義構文

アクセス修飾子静的メソッドの戻り型の名前(パラメータリスト){

//メソッドは、達成するために

}

b)のアクセス方法

1.クラスの静的メソッドでクラスにアクセスします。メソッド名(引数);

2.アクセス他のクラス:クラス名メソッド名(引数);

//java.util.Arrays.copyOf()java.util.Arrays.sort()

//java.lang.Math.Sqrt(n); java.lang.Math.PI

C)特徴

1.静的メソッドは、直接、静的メンバーのみにアクセスすることができ、直接非静的メンバにアクセスすることはできません。

原因:あなたは静的メンバにアクセスすると、オブジェクトを作成し、ないかもしれませんが、メソッドのメンバー、メンバ変数

名前(参照)によってオブジェクトの必要性は、その結果は曖昧です。静的な方法でそう

法は、直接静的メンバーのみにアクセスすることができ、あなたは直接、非静的メンバにアクセスすることはできません。

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OnAzb1EO-1571962949532)(E:\Corejava\课堂笔记及代码\day13_三个修饰符\笔记\static不能直接访问普通成员.png)]

2. 在静态方法中不能使用this|super的前缀。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yFM7pWlH-1571962949532)(E:\Corejava\课堂笔记及代码\day13_三个修饰符\笔记\static不能直接访问普通成员2.png)]

3. 静态方法可以被继承,静态方法只能被静态方法覆盖,但是没有多态(多态 的特点:指的是父类引用指向子类对象,调用父类中的方法吗,如果这个方 法被子类覆盖了,那么执行的是子类覆盖之后的方法)

Super s = new Sub(); s.m1() 执行的是Super类的方法

s.m1()会被转换成Super.m1();

3. 动态代码块|初始代码块

a) 定义的位置:类中,方法的外面

b) 作用:可以为属性进行初始化的工作

c) 执行地位:在构造方法之前执行,和初始化属性按照顺序进行初始化

的动作.

4. 静态代码块

a) 定义位置: 类中,方法的外面,被static 修饰

b) 作用:为静态属性赋值

c) 执行地位:在类加载时,和静态属性的初始化工作按照顺序进行。

类加载的时候会触发静态代码块的执行

5. 类加载

a) 概念:JVM在第一次使用某一个类的时候会通过CLASSPATH找到编译之后生

成的.class文件,然后将类中所有的信息(类名,属性,方法,构造方

法,包结构,接口…)保存到内存中。类加载只会进行一次。

b) 类加载的时机

1. 第一次创建对象时会触发类加载的进行。

2. 第一次访问静态成员时会触发类加载的进行

3. 子类类加载会触发父类类加载的先进行

4. Class.forName(“全限定名”);

注意:只是声明引用,不创建对象不会进行类加载。

6. 对象的创建过程

a) 没有继承关系的对象创建过程

ここに画像を挿入説明

b)存在继承关系的对象创建过程

ここに画像を挿入説明

二、abstract 抽象的

1. 概念:像却不是的,具备某种对象的特征,但好像又不完整。

2. 可以修饰类和方法

3. abstract可以修饰类 ,此类为抽象类,那么此类就是不够完整,不够具体的类,此类不能new对象。

a) 语法:abstract class 类名{}

b) 抽象类的作用:

1. 可以为子类提供共性的属性和方法,那么父类共性+子类独有=完整的子类对象

(抽象类可以被继承,抽象类存在构造方法,在子类构造方法的第一行默认存

在一个super(),代表调用父类的构造方法,那么构建子类对象之前一定会先

构建父类对象,父类共性+子类独有组合成完整的子类对象)

ここに画像を挿入説明

2. 可以声明为引用,强制使用多态。

(不能保存自身类型的对象,只能保存子类类型的对象,强制使用多态)

ここに画像を挿入説明

4. abstract修饰方法 抽象方法 不够完整,不够具体的方法,被abstract修饰

a) 特点

1. 一个类继承了一个抽象类,那么必须要实现抽象类中的抽象方法,否则这个类还是

一个抽象类。

2. 抽象类中可以存在普通方法,也可以没有抽象方法,但是抽象方法必须包含在抽象类中。

抽象类的用处:一般用于修饰父类 如Person Animal Shape

三、final 最终的 最后的

final能够修饰类、方法、变量

1. final修饰类 最终的类,最后的类

此类不能被继承 没有子类

System|Math|String都属于final修饰的类

2. final修饰的方法 最终的最后的方法

final修饰的方法可以被继承,但是不能被覆盖。

3. final修饰的变量 最终的变量 值不能改变 常量

a) 局部常量

赋值时机:显示初始化的时候必须赋值

b) 成员常量:

没有默认值,必须先赋值才能使用
赋值时机:必须在对象创建完毕之前赋值
1. 显示初始化
2. 动态代码块
3. 构造方法
注意:如果需要通过构造方法为final修饰的成员变量赋值,那么必须保证所有的构造方法都能正确
赋值。

c) 静态常量

没有默认值,必须手动赋值
割り当てのタイミング:クラスローダの終了前に割り当てます
1.ディスプレイの初期化
2.静的コードブロック

d)のオブジェクト定数

変数の基本データ型の最後の修正は、値を変更することはできません

変数の最終的な修正された参照データ型、アドレスを変更することはできません。

第四に、修飾子の共同使用(プライベート抽象のstatic finalメソッド)

1.アブストラクトは民間と連携して使用することはできません

いいえ、理由:抽象修正方法にはメソッド本体ではありません、と要件サブクラスの継承をカバー

抽象メソッドが、民間の修正方法は継承できません。

2.抽象的には、静的と組み合わせて使用​​することができます

、理由はありません:静的な修飾法は、クラス名を介して起動することができますが、抽象的な

ボディは呼び出すことはできません方法はありません

3.抽象的には、最終的に関連して使用することはできません

いいえ、理由:抽象的ニーズをカバーすることにするが、最終的な方法は、以下の変更が可能

チェンが、それはカバーできません

4.民間最終静的と組み合わせて使用​​することはできません

これは、組み合わせ二十から二で使用することができます

3.抽象的には、最終的に関連して使用することはできません

いいえ、理由:抽象的ニーズをカバーすることにするが、最終的な方法は、以下の変更が可能

チェンが、それはカバーできません

4.民間最終静的と組み合わせて使用​​することはできません

これは、組み合わせ二十から二で使用することができます

おすすめ

転載: blog.csdn.net/weixin_45536396/article/details/102736085