1.はじめにコンストラクタ
施工方法は、オブジェクト、初期値が割り当てられているオブジェクトのメンバ変数に初期化動作を行うため、コンストラクタ(コンストラクタ)と呼ばれています。
文の形式:[修飾子]クラス名(パラメータリスト){}
注意事項:
-
コンストラクタクラス名と名前は、大きなこぶの命名規則を使用して、同じでなければなりません。
-
戻り値のタイプを定義せず、コンストラクタ、メソッドは、本体の戻り特定データを許可しません。
-
コンストラクタは、それが特別な方法で、新しいキーワードで呼び出さなければなりません。
[**] **初心者の地雷原オブジェクトは、それを達成するためにコンストラクタのメソッドによって完全に作成されましたか?
不是。构造方法是创建java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回了该类的对象,但这个对象并不是完全由构造器负责创建的。创建一个对象分为如下四步:
1、分配对象空间,并将对象成员变量默认初始化。
2、执行成员变量的显示初始化。
3、执行构造方法。
4、返回对象的地址给相关的变量。
引数なし2.コンストラクタ
ないクラスのコンストラクタは、引数なしでデフォルトコンストラクタを提供します。
[例]引数なしコンストラクタ
class Person {
String name;
/*
默认存在的无参构造方法
public Person() {}
*/
}
public class ConstructorDemo {
public static void main(String[] args) {
// 采用无参构造方法,来实例化一个对象
Person p = new Person();
p.name = "xiaohua";
System.out.println(“name:” + p.name);
}
}
我々も存在を行う引数なしでコンストラクタを逆コンパイルの仕方によって実証することができます。
逆コンパイル手順:
-
javacのはバイトのファイルにソースコードをコンパイルするには、Person.javaàPerson.class
-
操作デコンパイルてjavap、てjavapの人
3.そこ引数コンストラクタ
これは、定義によってメンバ変数にパラメータであるパラメータの形で添加される引数なしでコンストラクタです。
[例]参照は、教師クラスのコンストラクタに追加されます。
// 老师类
class Teacher {
// 成员变量
String name; // 姓名
int age; // 年龄
String major; // 专业
// 有参构造方法
public Teacher(String name, int age, String major) {
// 局部变量和成员变量同名,使用this来区分成员变量
this.name = name;
this.age = age;
this.major = major;
}
// 成员方法
void work() {
System.out.println(name + "在上课");
}
void show() {
System.out.println("name:" + name + " age:" + age + " major:" + major);
}
}
// 测试类
public class TeacherTest {
public static void main(String[] args) {
// 创建一个老师对象
// Teacher t = new Teacher(); 编译错误,思考为什么???
Teacher teacher = new Teacher("谭老师", 31, "java讲师");
// 调用成员方法
teacher.work();
teacher.show();
}
}
注意事項:
-
あなたが指定したコンストラクタメソッドを定義する場合、デフォルトのコンストラクタは何も設けられていません。
-
同じ名前とローカル変数の場合はメンバ変数は、この変数のメンバーを区別するために使用しました。
-
推奨事項:引数なしで何省略しないコンストラクタは、クラスごとに独自の非工法のパラメータを持つ必要があります。
4.コンストラクタのオーバーロード
Javaでは、コンストラクタをすることができる過負荷、過負荷のコンストラクタは、典型的な方法のオーバーロードの特別な場合です。あなたがオブジェクトを作成すると、JVMは自動的にメソッド呼び出し、成功した試合後に実行されるコンストラクタの現在の形に応じてクラスの定義に沿って、コンストラクタのフォームと一致します。
[例]コンストラクタのオーバーロード
// 老师类
class Teacher {
// 成员变量
String name; // 姓名
int age; // 年龄
String major; // 专业
// 无参构造方法
public Teacher() {}
// 有参构造方法
public Teacher(String name) {
this.name = name;
}
// 有参构造方法
public Teacher(String name, int age) {
this.name = name;
this.age = age;
}
// 有参构造方法
public Teacher(String name, int age, String major) {
// 局部变量和成员变量同名,使用this来区分成员变量
this.name = name;
this.age = age;
this.major = major;
}
// 成员方法
void work() {
System.out.println(name + "在上课");
}
void show() {
System.out.println("name:" + name + " age:" + age + " major:" + major);
}
}
// 测试类
public class TeacherTest {
public static void main(String[] args) {
// 创建四个老师对象
Teacher t1 = new Teacher();
Teacher t2 = new Teacher("谭老师");
Teacher t3 = new Teacher("谭老师", 31);
Teacher t4 = new Teacher("谭老师", 31, "java讲师");
}
}
5.メンバーを判別構造及び方法の方法
-
差異:定義フォーマットの違い
コンストラクタメソッド名はクラス名に、戻り値の型を定義していません。
メソッドメンバー唯一の方法に準拠した識別子、あなたは戻り値の型を定義する必要があります。
-
両者の違い:呼び出し期間の違い
オブジェクトがインスタンス化されたときにコンストラクタが呼び出されます。
オブジェクトが作成された後方法のメンバーが呼び出されます。
-
三つの違い:違いが呼び出されます
コンストラクタは、新しいキーワードによって呼び出されます。
この方法は、オブジェクトのメンバーによって呼び出されます。
-
4を区別:呼び出しの数の違いを
呼び出しはオブジェクトを作成する際にコンストラクタは、一度だけ呼び出すことができます。
この方法のメンバーは、何回でも呼び出すことができます!
[学習運動]
図1に示すように、座標は二次元座標空間の位置を示すために、クラス(ポイント)を定義します。クラスの座標の方法で計算を2座標位置(:コンストラクタの要件)との間の距離を達成します。
クラスメンバ変数の座標:X軸点(X)、Y軸点(Y)
クラスのコンストラクタ座標:ポイント(ダブルのx、ダブルy)は
この方法は、クラスメンバを座標2つの座標位置(getDistance)との間の距離を計算します
PS:最新の無料のマニュアルと教育ビデオの場合は、QQグループ(627407545)を追加してください受けます。