建設やメソッドのメソッドのオーバーロード

最後の章ではボーエン「説明するためのJavaの基礎、」我々は、Javaプログラミング言語、基本的な出力方法、および8つの基本タイプとクラスの概念の利点を理解しています。コンストラクタとメソッドのオーバーロード-私は少しので、JAVA言語で、このブログの記事内の学生は2の2つの非常に一般的な手段を導入しました。

まず第一に、私が説明しなければならない方法 C言語で、当社の機能と同等のJAVA言語の方法を、:。
我々はJAVAいくつかの教訓を学ぶ前に(、私はそれを明確にしたいと思います:C言語やJAVA言語が同じではありませんが、私たちは専門用語を修正するために、できるだけ早く来たい、それはもはやC言語の習慣で使用することができるが、我々は学ぶことがたくさんありますのみ)私たちが進行することが、以前考えられていたと取り払うより悪いわずか、優れた知識から学び続けます

「方法」を学習した後、我々はテーマになりました。

コンストラクタ:

「コンストラクタは」平均何ですか?
ここでは、学生のための一例で紹介します。
またはレッスンのスクリーン座標に取り組んで、私たちは外にファーストクラスのコードを持っています:

SimplePoint.java:

class SimplePoint {
    int row;
    int col;

    void showPoint() {
        System.out.println("(" + row + "," + col + ")");
    }
}

DemoSimplePoint.java:

class SimplePointDemo {
    public static void main(String[] arg) {
        SimplePoint b = new SimplePoint();  
        b.row = 10;
        b.col = 20;
        b.showPoint();
    }
}

私はレッスンを学んだ学生が、ここでのコードを持っている疑問を持っていないと信じています。
:へのリクエストに入れて私は
、我々はクラスのインスタンスを定義するとき、それは割り当てのすべてのメンバーことが必要である要件。
現在のコースを学ぶ学生のためのこの要件は、それはそう、私は今この問題を解決するための方法を紹介し、ほとんど不可能である- コンストラクタ

私はルールのコンストラクタをご紹介しましょう。

ルールのコンストラクタ
1コンストラクタは、クラスを命名しなければならない;
2。コンストラクタ(ボイドや)の戻り値を宣言していない;
3。ユーザーは、コンストラクタを呼び出すことはできません。
4コンストラクタのとき、新しい新しいと呼ばれる;。
。5コンストラクタ。この方法のすべてのメンバーの初期値:0(バイト、文字、短い主な目的は、あなたが書いていない場合は、クラスのコンストラクタは、それはデフォルトコンストラクタがある場合は、以下のように(各メンバーの値を初期化することで 、int型、ロングタイプ)
0.0 (フロート、ダブルタイプ)偽(論理型)NULL(クラス型、クラス型が変数「ポインタ」であることを理解すべきで))

さて、私たちは今、上記の要件を実装するために使用されるコードを見て:
SimplePoint.javaを:

public class  SimplePoint{
    private int row;    //private表示这个变量只能在该类中被调用。用于防止外类修改该成员
    private int col;

    public MecPoint(int x, int y) { //这就是我们所谓的“构造方法”
        setRow(x);
        setCol(y);
    }

    public void setRow(int x) {
        if(x <= 1 || x > 25) {  //对x范围进行约束
            x = 12;
        }
        row = x;
    } 
    
    public void setCol(int y) {
        if(y <= 1 || y > 80) {  //对y范围进行约束
            y = 40;
        }
        col = y;
    }

    public void printPoint() {
        System.out.println("(" + row + "," + col +")");
    }
}

まあ、それは例とルールのコンストラクタです。
-今、私たちは第二の問題入力メソッドはオーバーロードし、それを!

メソッドのオーバーロード:

メソッドのオーバーロード、この知識は、本当にそれはあなたが別のメソッドのオーバーロードのためのメソッドの定義を繰り返すことができますので、私は、異なるアプローチ、手段があり、いくつかの「オブジェクト指向」感覚に少し理解して作られました、我々は、入力されたコンテンツへのユーザーは、もはや単一である必要はないが、ほとんどの法的エントリの様々なを満たすことができます。
、私は今それを支配「メソッドオーバーロード」の下に紹介することを言いました:

この方法は、ルールの過負荷
同じ名前を(1)の方法;
(2)パラメータと、パラメータタイプの異なる数;
(3)差分の戻り値の種類は決定的な要因ではない。((1)及び(2)は決定的な要因です)
(4)長い(1)及び(2)のように、それはコンストラクタをオーバーロードすることができます。

さて、以上の例を取る、我々は、パラメータまたは二つのパラメータ、パラメータなし、あるいはオブジェクトパラメータ(変数型はクラスである)、関連するコードが次のようにされている、とすることができる入力するようにユーザに求めています。

SimplePoint.java:

public class  SimplePoint{
    private int row;    //private表示这个变量只能在该类中被调用。用于防止外类修改该成员
    private int col;

    public SimplePoint() {              //无参构造方法
        System.out.println("This is none argument constructor!");
        setRow(0);
        setCol(0);
    }

    public SimplePoint(int x, int y) {  //2个参数的构造方法
        System.out.println("This is 2 argument constructor!");  
        setRow(x);
        setCol(y);
    }

    public SimplePoint(int x) {         //一个参数的构造方法
        System.out.println("This is signle argument constructor!"); 
        setRow(x);
        setCol(0);
    }

    public SimplePoint(SimplePoint point) { //对象作为参数的构造方法
        System.out.println("This is object argument constructor!"); 
        setRow(point.row);
        setCol(point.col);
    }

    public void setPoint(int x, int y) {
        setRow(x);
        setCol(y);
    }

    public void setPoint(int x) {
        setPoint(x, 0);
    }

    public void setPoint(SimplePoint source) {
        setPoint(source.row, source.col);
    }

    public void setRow(int x) {
        if(x <= 1 || x > 25) {  //对x范围进行约束
            x = 12;
        }
        row = x;
    } 
    
    public void setCol(int y) {
        if(y <= 1 || y > 80) {  //对y范围进行约束
            y = 40;
        }
        col = y;
    }

    public void printPoint() {
        System.out.println("(" + row + "," + col +")");
    }
}

私は、「データ構造とアルゴリズム」の欄で述べたように、私たちは論理的であることを、コードを書く前に、私たちは今、上記の二つの文書を最適化するために、コードを見て、メソッド(関数)は、単一の完全な総機能が備わっています:
MecPoint.java:
なぜなら私のマイクロ技術の、コード・リーダー財布ですので、私MecPoint.javaという名前のファイル)

public class  MecPoint{
    private int row;    //private表示这个变量只能在该类中被调用。用于防止外类修改该成员
    private int col;

    public final int MIN_ROW = 1;
    public final int MAX_ROW = 25;
    public final int DEFAULT_ROW = 12;
    public final int MIN_COL = 1;
    public final int MAX_COL = 80;      //屏幕点坐标范围:共25行、80列
    public final int DEFAULT_COL = 40;  //默认屏幕点坐标错误时,设为中值   

    public MecPoint() {
        System.out.println("This is none argument constructor!");
        setRow(0);
        setCol(0);
    }

    public MecPoint(int x, int y) {
        System.out.println("This is 2 argument constructor!");
        setRow(x);
        setCol(y);
    }

    public MecPoint(int x) {    
        System.out.println("This is signle argument constructor!"); 
        setRow(x);
        setCol(0);
    }

    public MecPoint(MecPoint point) {
        System.out.println("This is object argument constructor!"); 
        setRow(point.row);
        setCol(point.col);
    }
    
    public void setPoint(int x, int y) {
        setRow(x);
        setCol(y);
    }

    public void setPoint(int x) {
        setPoint(x, 0);
    }

    public void setPoint(MecPoint source) {
        setPoint(source.row, source.col);
    }

    public void setRow(int x) {
        if(x <= MIN_ROW || x > MAX_ROW) {   //对x范围进行约束
            x = DEFAULT_ROW;
        }
        row = x;
    } 

    public int getRow() {
        return row;
    }
    
    public void setCol(int y) {
        if(y <= MIN_COL || y > MAX_COL) {   //对y范围进行约束
            y = DEFAULT_COL;
        }
        col = y;
    }

    public int getCol() {
        return col;
    }

    public void printPoint() {
        System.out.println("(" + row + "," + col +")");
    }
}

あなたは、私が3つの新機能を追加し、見ることができます:機能を座標移動、横軸、縦読みを読み、
そして種類の多くを書くここにタイプの「公共の最終int型」変数はintとして理解することができますタイプ「マクロ」(私は将来のブログ記事で詳しく説明しますという知識)、我々のコードのロジックは非常にはっきりしているので!

:さて、今、2つの特定の問題は現在、これらのメソッドを呼び出すために、具体的方法を、自分自身を示すために、次を完了し説明してきました

DemoMecPoint.java:

public class  DemoMecPoint{
    public static void main(String[] args) {
        MecPoint pointFirst = new MecPoint();
        System.out.println("演示 无参 构造结果:");
        pointFirst.printPoint();

        MecPoint pointSecond = new MecPoint(5, -7);
        System.out.println("演示 双参 构造结果:");
        pointSecond.printPoint();

        MecPoint pointThird = new MecPoint(20);
        System.out.println("演示 单参 构造结果:");
        pointThird.printPoint();

        MecPoint pointForth = new MecPoint(pointFirst);
        System.out.println("演示 对象 构造结果:");
        pointForth.printPoint();
    }
}

まあ、今はコードの下で動作して結果を表示する必要があります。
ここに画像を挿入説明

だから、すべてのコンテンツこれまでのところ、このポストは、完全な説明します。
JAVAがあまりにも自由であるため、JAVA言語は、学生に新しいに関しては、また、私は確信して、JAVAに、学生はCで非常に一貫性のないものになるかどうかを学んだよ、綿密な調査では、しかし、いくつかのに適してすることができますあまりにも便利!

ボーエンfianlキーワードや学生のフィルムは、我々は、静的なキーワードを使用することに疑問されている場合は、私のブログをチェックアウト- 「詳細な最終的な静的な。」

おすすめ

転載: www.cnblogs.com/codderYouzg/p/12416426.html