ダートの言語学習06
著者:ScorpioDong
1.クラス
ダートは、オブジェクト指向言語です。それは、このようなクラス、インターフェイスなどのオブジェクト指向プログラミングをサポートしています。クラスのOOPの側面には、オブジェクト/テンプレートの青写真を作成することです。クラスは、データオブジェクトをカプセル化します。ダートはビルトインクラスの概念をサポートしています。
クラスの1.1声明
- 使用
class
ダートでクラスを宣言するキーワード。 - クラス定義キーワード
class
クラス名に続いて先頭に、。 - クラス名は、大きなこぶの命名法を使用することをお勧めします。
- クラス名は、カッコの組に包まれたクラス本体が続きます。
class Test {
// Fields
String name;
// Getters and Setters
// Constructors
Test() {
this.name = "张三";
}
// Functions
void eat() {
print("$name eatting...");
}
}
クラスボディ・フィールド、ゲッタとセッタ、コンストラクタと関数のオプションであり、定義された需要
- フィールド(フィールド) - フィールドクラスに宣言された変数、フィールドは、オブジェクトに関連するデータを表します。
- セッターとゲッターは - フィールドの初期値を許可し、クラス、各クラスに関連付けられたデフォルトのゲッター/セッターを取得します。しかし、デフォルト値は明示的にセッター/ゲッターを定義することでオーバーライドすることができます。
- コンストラクタ(コンストラクタ) - オブジェクトクラス用のメモリを割り当てることが責任を負います。
- 関数(関数) - 操作対象の機能は、それらが時には方法と呼ばれ、取り出すことができます。
機能属性とアクセスクラス1.2の例
使用new
クラスのクラス名に続くキーワードの例が作成されます。
main() {
var obj = new Test();
print(obj.name);
obj.eat();
}
class Test {
// Fields
String name;
// Getters and Setters
// Constructors
Test() {
this.name = "张三";
}
// Functions
void eat() {
print("$name eatting...");
}
}
プロパティクラスによってアクセスされるクラスのオブジェクトインスタンスの方法。使用.
のアクセスポイントに蓄積されたデータメンバー。
1.3コンストラクタ
- コンストラクタは、変数の初期化クラスを担当して、機能の特殊なクラスです。
- ダートコンストラクタはクラス名と同じ機能です。
- コンストラクタのパラメータが存在していてもよいです。コンストラクタは戻り値はありません。
- そうでない場合は、コンストラクタ、ダート引数なしのデフォルトの空のコンストラクタ。
class Test {
// Fields
String name;
// Getters and Setters
// Constructors
Test() { // <--构造函数,初始化了name变量
this.name = "张三";
}
// Functions
void eat() {
print("$name eatting...");
}
}
ダートという名前のコンストラクタは、クラスは複数のコンストラクタを定義することができるようにすることを、提供します。
文法类名.构造方法名(形参列表) {函数体}
class Test {
// Fields
String name;
// Getters and Setters
// Constructors
// 构造函数,初始化了name变量
Test() {
this.name = "张三";
}
// 命名构造函数
Test.nameTest(String name) {
this.name = name;
}
// Functions
void eat() {
print("$name eatting...");
}
}
1.4このキーワード
このキーワードは、クラスの現在のインスタンスを参照します。ここでは、パラメータ名とクラス名フィールドは同じです。したがって、このキーワード接頭辞を持つフィールドのクラスをあいまいさを避けるためです。
class Test {
// Fields
String name;
// Getters and Setters
// Constructors
// 构造函数,初始化了name变量
Test() {
this.name = "张三"; // this关键字的使用
}
// 命名构造函数
Test.nameTest(String name) {
// this关键字的使用,因为字段名和形参名一样,冲突
this.name = name;
}
// Functions
void eat() {
print("$name eatting...");
}
}
1.5ゲッターとセッター
ゲッターとセッター(アクセスユニットと変更と呼ばれる)は、プログラムは各階級の値を初期化フィールドを取り出すことができます。GETキーワード定義ゲッターまたはアクセサを使用してください。セッターまたはアクセスが設定されたキーワードを使用して定義されます。
各クラスに関連付けられたデフォルトのゲッター/セッター。しかし、デフォルト値は明示的にセッター/ゲッターを定義することでオーバーライドすることができます。ゲッターは、パラメータや戻り値、セッターパラメータを1つだけ持っていませんが、値を返しません。
main(List<String> args) {
var a = new Test();
a.test_name = "李四";
print(a.test_name);
}
class Test {
// Fields
String name;
// Getters and Setters
// 定义name 的 Getter
String get test_name {
return name;
}
// 定义name 的 Setter
void set test_name(String name) {
this.name = name;
}
// Constructors
// 构造函数,初始化了name变量
Test() {
this.name = "张三"; // this关键字的使用
}
// 命名构造函数
Test.nameTest(String name) {
// this关键字的使用,因为字段名和形参名一样,冲突
this.name = name;
}
// Functions
void eat() {
print("$name eatting...");
}
}
1.6パッケージ
- ダートは、公共およびその他の権利修飾子、プライベートではありません。
- あなたは使用することができ
_
、プライベートとしてマークされた接頭識別子に下線を。
class Test {
// Fields
String _name; //标记私有外部无法访问
// Getters and Setters
// 定义name 的 Getter
String get test_name {
return _name;
}
// 定义name 的 Setter
void set test_name(String name) {
this._name = name;
}
// Constructors
// 构造函数,初始化了name变量
Test() {
this._name = "张三"; // this关键字的使用
}
// 命名构造函数
Test.nameTest(String name) {
// this关键字的使用,因为字段名和形参名一样,冲突
this._name = name;
}
// Functions
void eat() {
print("$_name eatting...");
}
}
1.7継承
- ダートは、既存のクラスから新しいクラスを作成するプログラムの能力で、継承の概念をサポートしています。親/スーパーよりもクラスと呼ばれる新しいクラスを作成するために拡張。新しく作成したクラスと呼ばれた子/サブクラス。
- 使用して、クラス
extends
別のクラスから継承されたキーワードを。サブクラスは親クラスのコンストラクタ以外のすべてのプロパティとメソッドを継承します。 - ダートクラスは、クラスが一つだけの親を持つことができている唯一の単一継承モデルをサポートしています。
main(List<String> args) {
var obj = new B();
print(obj.a);
}
class A {
int a = 5;
}
class B extends A {
}
実行
5
メソッドのオーバーライド
- サブクラスのオーバーライド・メカニズムは、その親クラスのメソッドを再定義する方法です。
- メソッドのオーバーライド
@override
フラグ。 - この方法は、一致するようにメソッドの親クラスとメソッド名、パラメータリストや戻り値の型をオーバーライドします。
main(List<String> args) {
var obj = new B();
obj.F();
}
class A {
int a = 5;
F() {
print("123");
}
}
class B extends A {
@override
F() {
print("456");
}
}
実行
456