Javaプログラミング多重類コードの詳細解
本論文で研究したのは主にJavaプログラミング中の多重類です。一体、多重化類はどんなものですか?またどのような使い方がありますか?具体的に紹介します。
羅昇陽さんのインタビューを見て、思わず感心しました。若いです。羅永浩さんと同じクラスの年齢だと思っていました。中学校のプログラミングではない大牛の一人です。インタビューしてみたら、羅さんも一歩ずつ足跡を残している人です。難しいことはおろか、できないことはおろか、やってみませんでした。
If you can't fly then run,if you can't run then walk,if you can't walk then crawl,but
whatever you do,you have to keep moving forward――マーティンLuther King.
多重類というタイトルは最初は分かりにくいですが、専門的に本の英語原版を見に行きました。実はタイトルはreusing clasesです。再びクラスを使うということです。実は多重化は「既成のものを利用する」という意味です。実は、実現する二つの方法はjavaでよく耳にする――組合と継承です。
(1)組み合わせ
has-aの役割。
TVでショーがありますが、今のショーは初期化されていません。nullですので、ショーの方法は使えません。
組み合わせの効果が強いので、対象に向けてみてください。もし、カルボ類を作っているなら、簡単にGlass、Light、Engineなどのカルタを組み合わせてもいいです。
(2)継承
is-a
prvateの部分は継承できないので、父の種類の私有に属して、publicの部分は継承して、改正の方法が必要で、書き換えることができます。追加する属性は単独で追加できます。
また、継承の方法は、元のfatherのpublicメソッドを書き換えた後にpublicを追加しないと、Canot reduce the visibility of the inhersited method from Fatherがあり、つまり親の相続方法の視認性を減らすことができません。superとは、父類、すなわちFatherのことです。
もう一つのポイントは、javaのすべてのクラスがObjectクラスを陰的に継承していることです。Objectは父類で、その他は子類です。
外国人は基種として話すのが好きです。サブクラスは、導出類や派生類とも呼ばれる。
(3)代理
デザインモードの中には分かりにくいのがあります。代理モードは著者の話が面白いです。代理は組み合わせと継承の中庸です。
(4)書き換えと重載
リロードは同じ方法名ですが、パラメータ名が違っていますので、間違ったリロードを防ぐために@Overrideタグを付けてもいいです。書き換え方法がないということをヒントにします。
(5)protected
Javaプログラミングアクセス権限の制御コードの詳細
前の編で前書きしました。前に相続の話をしていませんから。
protectedは父親が息子に相続した遺産と簡単に見ることができます。他の非継承類は訪問できません。
(6)finalキーワード
finalキーの基本タイプを加えると、この変数は初期化されても変わりません。cのdefineに似ています。このプログラムで変数がこの値です。変更は必要ありません。finalが使えます。
static finalはコンパイルの定数で、定数名はcの定数によって伝統に命名されています。すべて大文字で、単語の間に下線で区切られています。
ついでに権限を整理します。 public、公共財産は、子供だけでなく、他の種類も使えます。 final、先祖伝来の宝物は、サブクラスに残していますが、修正は許されません。 prvate、親の私有財産は、子類に引き継がれません。 protected、親はもっぱら子供の財産を残して、他の人はそれを使うことができません。 finalがクラスを修飾したときは、このクラスが引き継がれないようにするためです。
(7)相続と初期化
ここの順序問題は面白い問題です。例を見る。
メインメソッドを実行しますが、これを見て静的に初期化しなければならないiがありません。結果はs、firstですか?
これは初期化の問題があります。ソンはfatherを継承しています。コンパイラはfatherをロードして初期化します。それではfatherはgrand fatherを継承しています。そうすると、コンパイラはgrand fatherをロードします。再帰のようです。
最後に最初に初期化したのはgrand fatherのiです。
ですから、最後の結果はg、f、s、firstです。
締め括りをつける
以上がJavaプログラミング多重類コードについての詳細な内容です。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。
羅昇陽さんのインタビューを見て、思わず感心しました。若いです。羅永浩さんと同じクラスの年齢だと思っていました。中学校のプログラミングではない大牛の一人です。インタビューしてみたら、羅さんも一歩ずつ足跡を残している人です。難しいことはおろか、できないことはおろか、やってみませんでした。
If you can't fly then run,if you can't run then walk,if you can't walk then crawl,but
whatever you do,you have to keep moving forward――マーティンLuther King.
多重類というタイトルは最初は分かりにくいですが、専門的に本の英語原版を見に行きました。実はタイトルはreusing clasesです。再びクラスを使うということです。実は多重化は「既成のものを利用する」という意味です。実は、実現する二つの方法はjavaでよく耳にする――組合と継承です。
(1)組み合わせ
has-aの役割。
public class TV {
Show show;
public String toString(){
return "showgirl";
}
}
class Show{
}
String方法を教えてください。Stringが必要で、あなたがオブジェクトである場合、コンパイラはオブジェクトのtoStringメソッドを呼び出します。TVでショーがありますが、今のショーは初期化されていません。nullですので、ショーの方法は使えません。
組み合わせの効果が強いので、対象に向けてみてください。もし、カルボ類を作っているなら、簡単にGlass、Light、Engineなどのカルタを組み合わせてもいいです。
(2)継承
is-a
package com.myown.iaiti;
public class Father {
public int i;
void get(){
System.out.println("father");
}
}
package son;
import com.myown.iaiti.*;
public class Son extends Father{
Father f = new Father();
int j = f.i;
Son son = new Son();
son.get();
}
public void get(){
super.get();
System.out.println("son");
}
}
ここにはパッケージアクセス権限の問題があります。publicを追加していない場合は、デフォルトではパッケージメンバー訪問、すなわちSonのFatherメンバー訪問get方法は見られません。publicは見えるので、iアクセスができます。prvateの部分は継承できないので、父の種類の私有に属して、publicの部分は継承して、改正の方法が必要で、書き換えることができます。追加する属性は単独で追加できます。
また、継承の方法は、元のfatherのpublicメソッドを書き換えた後にpublicを追加しないと、Canot reduce the visibility of the inhersited method from Fatherがあり、つまり親の相続方法の視認性を減らすことができません。superとは、父類、すなわちFatherのことです。
もう一つのポイントは、javaのすべてのクラスがObjectクラスを陰的に継承していることです。Objectは父類で、その他は子類です。
外国人は基種として話すのが好きです。サブクラスは、導出類や派生類とも呼ばれる。
(3)代理
デザインモードの中には分かりにくいのがあります。代理モードは著者の話が面白いです。代理は組み合わせと継承の中庸です。
package son;
class Father{
public void get(){
System.out.println("father");
}
}
public class Son extends Father{
public static void main(String[] args) {
Father f = new Father();
f.get();
}
}
class FatherProxy{
private Father f = new Father();
public void get(){
f.get();
}
}
直接にFatherをメンバーにすると、fatherの方法がこのクラスに暴露されます。FatherProxyのような代理類を使ってもいいです。getの方法を自分で定義して、fatherを呼び出すget方法だと知っていますが、私の代理人は分かりません。代理のgetを使う方法を教えてください。パッケージ性は体現されています。上は適当に叩くだけの簡単な例です。(4)書き換えと重載
class Father{
public void get(String s){
System.out.println("father");
}
public void get(boolean b){
System.out.println("boolean");
}
}
public class Son extends Father{
@Override
public void get(String s){
System.out.println("father");
}
// @Override // ,
public void get(int i ){
System.out.println("sonint");
}
public static void main(String[] args) {
Son s = new Son();
s.get("d");
s.get(false);
s.get(1);
}
}
書き換えは親を上書きする方法です。書き換えや重載がない場合は、サブクラスにない方法を呼び出します。リロードは同じ方法名ですが、パラメータ名が違っていますので、間違ったリロードを防ぐために@Overrideタグを付けてもいいです。書き換え方法がないということをヒントにします。
(5)protected
Javaプログラミングアクセス権限の制御コードの詳細
前の編で前書きしました。前に相続の話をしていませんから。
protectedは父親が息子に相続した遺産と簡単に見ることができます。他の非継承類は訪問できません。
(6)finalキーワード
finalキーの基本タイプを加えると、この変数は初期化されても変わりません。cのdefineに似ています。このプログラムで変数がこの値です。変更は必要ありません。finalが使えます。
public class Son{
int age = 2;
public static void main(String[] args) {
final int i = 1;
// i = 2;
final Son son = new Son();
// son = new Son();
//The final local variable son cannot be assigned.
//It must be blank and not using a compound assignment
//final son ,
son.age = 4;
// , , 。
}
void change(final int c){
// c= this.age;
//age ++;
}
}
staticは元々静的初期化で、finalと一緒に使うと、変えられない記憶空間を占めています。static finalはコンパイルの定数で、定数名はcの定数によって伝統に命名されています。すべて大文字で、単語の間に下線で区切られています。
static final VALUE_ONE = 1;
final修飾方法の場合
public class Print {
final void cannotprint(){
System.out.println(1);
}
}
public class PrintSon extends Print{
//void cannotprint(){}
// final
public static void main(String[] args) {
PrintSon ps = new PrintSon();
ps.cannotprint();
}
}
親が子を求めて相続しなければならないと考えられています。prvateが式を隠してfinalに指定して、prvateがまったくあなたに継承しないためです。これはあなたに継承するよりも修正できないのがもっとプライベートです。ついでに権限を整理します。
(7)相続と初期化
ここの順序問題は面白い問題です。例を見る。
class GrandFather{
private static int i = print();
private static int print(){
System.out.println("g");
return 1;
}
}
class Father extends GrandFather{
private static int i = print();
private static int print(){
System.out.println("f");
return 1;
}
}
public class Son extends Father{
private static int i = print();
private static int print(){
System.out.println("s");
return 1;
}
public static void main(String[] args) {
System.out.println("first");
}
}
プリントの結果はfirstですか?間違えました。メインメソッドを実行しますが、これを見て静的に初期化しなければならないiがありません。結果はs、firstですか?
これは初期化の問題があります。ソンはfatherを継承しています。コンパイラはfatherをロードして初期化します。それではfatherはgrand fatherを継承しています。そうすると、コンパイラはgrand fatherをロードします。再帰のようです。
最後に最初に初期化したのはgrand fatherのiです。
ですから、最後の結果はg、f、s、firstです。
締め括りをつける
以上がJavaプログラミング多重類コードについての詳細な内容です。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。