php学習ノートオブジェクト指向

PHP中文网
リリース: 2017-07-29 16:36:28
オリジナル
3688 人が閲覧しました

public パブリック: このクラス、サブクラス、外部オブジェクトはすべて呼び出すことができます
保護: このクラスのサブクラスは実行できますが、外部オブジェクトは呼び出すことができません
プライベート: このクラスのみが実行され、サブクラスも外部オブジェクトも実行されません外部オブジェクトを呼び出すことができます
オブジェクト指向プログラミングの 3 つの主要な特徴

1) 閉鎖性

閉鎖性は、情報の隠蔽とも呼ばれます。クラスの利用と実装を分離し、外部と接続するインターフェース(メソッド)を限定することです。このクラスを使用する開発者は、このクラスの使用方法を知るだけでよく、このクラスがどのように実装されるかを気にする必要はありません。そうすることで、開発者は他のことに集中できるようになり、同時にプログラム間の相互依存によって引き起こされる不都合も回避できます。

2) 継承

継承とは、派生クラス (サブクラス) が 1 つ以上の基本クラス (親クラス) のプロパティとメソッドを自動的に継承し、オーバーライドしたり、新しいプロパティを追加したりできることを意味します。と方法。継承によりオブジェクトとクラスの作成が簡素化され、コードの再現性が向上します。継承は単一継承と多重継承に分けられますが、php では単一継承、つまりサブクラスが親クラスを 1 つだけ持つことをサポートしています。

3) ポリモーフィズム

ポリモーフィズムとは、同じクラスの異なるオブジェクトが同じメソッドを使用しても異なる結果が得られることを意味し、この技術はポリモーフィズムと呼ばれます。ポリモーフィズムにより、ソフトウェアの柔軟性と再利用性が向上します。

クラス定義

クラスには、独自の定数、変数 (「プロパティ」と呼ばれる)、および関数 (「メソッド」と呼ばれる) を含めることができます。
多くのオブジェクト指向言語と同様、php も class キーワードとクラス名を使用してクラスを定義します。クラスの形式は次のとおりです。

コードは次のとおりです。

<?php
  class myobject{
    //……
    }
?>
ログイン後にコピー

定義: 羽毛の鳥は群れを成し、同様の特性を持つオブジェクトはクラスにグループ化されます。クラスはこれらの類似したオブジェクトを定義し、同じプロパティとメソッドを持ちます。クラスは、クラスの定義と呼ばれる類似のオブジェクトの記述であり、そのクラスのオブジェクトの設計図またはプロトタイプです。

クラスのオブジェクトは、クラスのインスタンスと呼ばれます。クラスのインスタンスを作成するには、new キーワードを使用する必要があります。

<?php
//类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写
    class nbaplayer{
        public $name = "jordan"; //定义属性
        public $height = "198cm";
        public $team = "bull";
        public $playernumber = "23";
        //定义方法
    public function run(){
        echo "running\n";
    }
    public function dribblr(){
        echo "dribbling\n";
    }
    public function pass(){
        echo "passing\n";
    }
}
    //类到对象的实例化
    //类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号
    $jordan = new nbaplayer(); 
    //对象中的属性成员可以通过"->"符号来访问
    echo $jordan->name."\n";
    //对象中的成员方法可以通过"->"符号来访问
    $jordan->dribble();
    $jordan->run();
?>
ログイン後にコピー

メンバー メソッド

クラス内の関数はメンバー メソッドと呼ばれます。関数とメンバー メソッドの唯一の違いは、関数は独立した関数を実装するのに対し、メンバー メソッドはクラス内の動作を実装し、クラスの一部であることです。
上記の myobject クラスを展開し、メンバー メソッドを追加しましょう。コードは次のとおりです:

<?php
classmyobject{
   function getobjectname($name){
      echo "商品名称为:".$name;
   }
}
?>
ログイン後にコピー

このメソッドの機能は、製品名を出力することです。製品名は、メソッドのパラメータ。
クラスは抽象的な記述であり、同様の機能を持つオブジェクトのコレクションです。クラス内のメソッドと変数を使用する場合は、まずそれらをエンティティ、つまりオブジェクトに実装する必要があります。

クラス定数
変数があるので、当然定数もあります。定数とは、変化しない量であり、一定の値です。よく知られている定数は pi です。定数を定義するには、次のようなキーワード const を使用します。
constpi=3.14159;

コンストラクター

php 5 では、開発者がクラス内のコンストラクターとしてメソッドを定義できます。コンストラクターを持つクラスは、新しいオブジェクトが作成されるたびにこのメソッドを呼び出すため、オブジェクトを使用する前に初期化作業を行うのに非常に適しています。


デストラクター

<?php
//类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写
    class nbaplayer{
        public $name = "jordan"; //定义属性
        public $height = "198cm";
        public $team = "bull";
        public $playernumber = "23";
        //构造函数,在对象被实例化的时候自动调用
        function __construct($name,$height,$weight,$team){
            echo "it is an  nbaplayer constructor\n";
            $this->name = $name;
            //$this是php里面的伪变量,表示对象自身。可以通过$this->的方式访问对象的属性和方法
            $this->height = $height;
            $this->weight = $weight;
            $this->team = $team;
        }
        //定义方法
    public function run(){
        echo "running\n";
    }
    public function dribblr(){
        echo "dribbling\n";
    }
    public function pass(){
        echo "passing\n";
    }
}
    //类到对象的实例化
    //类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号
    $jordan = new nbaplayer("jordan","198cm","98kg","bull");   
    //对象中的属性成员可以通过"->"符号来访问
    echo $jordan->name."\n";
    //对象中的成员方法可以通过"->"符号来访问
    $jordan->dribble();
    $jordan->run();
    //每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数
    $james = new nbaplayer("james","203cm","120kg","heat")
    echo $james->name."\n";
?>
ログイン後にコピー

デストラクターは、オブジェクトへの参照がすべて削除された場合、またはオブジェクトが破棄されるときに明示的に実行された場合に発生します。

オブジェクトリファレンス

<?php
//类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写
    class NbaPlayer{
        public $name = "Jordan"; //定义属性
        public $height = "198cm";
        public $team = "Bull";
        public $playerNumber = "23";

        //构造函数,在对象被实例化的时候自动调用
        function __construct($name,$height,$weight,$team){
            echo "It is an  NbaPlayer constructor\n";
            $this->name = $name;
            //$this是PHP里面的伪变量,表示对象自身。可以通过$this->的方式访问对象的属性和方法
            $this->height = $height;
            $this->weight = $weight;
            $this->team = $team;
        }
        //析构函数,在程序执行结束的时候会自动调用
        //析构函数通常被用于清理程序使用的资源。比如程序使用了打印机,那么可以再析构函数里面释放打印机资源
        function __destruct(){
            echo "Destroying".$this->name."\n";
        }
        //定义方法
    public function run(){
        echo "Running\n";
    }
    public function dribblr(){
        echo "Dribbling\n";
    }
    public function pass(){
        echo "Passing\n";
    }
}
    //类到对象的实例化
    //类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号
    $jordan = new NbaPlayer("Jordan","198cm","98kg","Bull");   
    //对象中的属性成员可以通过"->"符号来访问
    echo $jordan->name."\n";
    //对象中的成员方法可以通过"->"符号来访问
    $jordan->dribble();
    $jordan->run();
    //每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数
    $james = new NbaPlayer("James","203cm","120kg","Heat")
    echo $james->name."\n";
    //对象的引用用于访问对象的属性和方法,$james,$james1和$james2都是对象的引用
    //$james和$james1是对象的两个独立引用
    //$james2是$james的影子,使用对象的同一个引用,任何一个赋值为null相当于删除了同一个引用
    $james1 = $james;
    $james2 = &$james
    $james = null;
    echo "from now on James will not be used.\n"
?>
ログイン後にコピー


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート