オブジェクト指向のJavaの三つの特徴

A:パッケージ


パッケージングは​​、クラス内の隠されたクラス状態情報であり、それは外部プログラムへの直接のアクセスが動作し、このような方法によって提供隠された情報にアクセスすることはできません。

一言で言えば隠された内部の実装、外部の方法を提供することです。

アクセス修飾子

  •     プライベート:クラスは、民間のメンバーに限定されており、唯一の可能クラス自体にアクセスできます。クラスのコンストラクタはprivateとして宣言した場合は、他のクラスのクラスインスタンスを生成することはできません。
  •     デフォルト:定義されたアクセスのメンバーがデフォルトに属しているアクセス権のいずれかのないクラス(デフォルト)状態であってもよいクラス自身、そして同じパッケージのクラスは、アクセス。
  •     保護:保護のクラスのメンバーとして定義されている、とすることができるクラス自体、(異なるパッケージで同じパッケージおよびサブクラスを含む)そのサブクラスと同一のパッケージ内の他のすべてのクラスにアクセスします。
  •     公共:クラスは公共のメンバーとして定義されているとすることができるすべてのクラスにアクセス可能。

 このキーワード

  •     このキーワードは、現在のオブジェクトを表します
  •     現在のプロパティと呼ばれるこの。プロパティ
  •     これ。現行法と呼ばれる方法

 

例Javaパッケージ

class Student{
    String name;
    private int age; //将age属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。
    public void show(){
        System.out.println("名字: " + name);
        System.out.println("年龄: " + age);
    }
    public void getAge(int Age){
    this.age=age;
    }
}

class StudentDemo{
    public static void main(String[] args){
        Student s = new Student();
        s.show();
        System.out.println("-------------------");
        //给成员变量赋值
        s.name = "小李";
    //通过方法赋值
        s.getAge(19);
        s.show();

    }
}

 

 

II:継承

オブジェクトのサブクラスは、親クラスのすべての属性とメソッドを持ち、親クラスを継承サブクラスと呼ばれます。

  • Java言語の継承:単一継承関係

  • サブクラスは一つだけの親を持つことができますが、親は複数の子クラスを持つことができます
  • サブクラスは親のプロパティとメソッドを使用することができますが、親がプロパティとメソッドの独自のサブクラスへのアクセス権を持っていません
  • オブジェクトのサブクラスを作成し、次にコンストラクタサブクラスを実行する親クラスのコンストラクタの最初の実装
  • 親クラスのコンストラクタを呼び出すためにsuperキーワードを使用します

Javaは、スーパーで親クラスメンバへのアクセスを可能にするために、スーパーは、現在の親オブジェクトを参照するために使用されます

最終:
宣言クラスにfinalキーワードは、クラスとして定義することができる継承することができない、最終的なクラスである;またはサブクラスでオーバーライドすることができない方法を変更するため。

コンストラクタ:

    親クラスのコンストラクタ(コンストラクタまたはコンストラクター法)ではありません継承サブクラスは、それは単純に(暗黙的または明示的な)を呼び出します。場合は、親クラスのコンストラクタの引数を持っている、それが明示的にスーパーコンストラクタのキーワードと適切なパラメータを使用して、サブクラスリストでスーパークラスのコンストラクタを呼び出す必要があります。

    親クラスのコンストラクタのパラメータが使用されていない場合は、コンストラクタにはスーパーキーワードは、親クラスのコンストラクタサブクラスを呼び出していない、システムが自動的に引数なしで親クラスのコンストラクタを呼び出します。

Javaの継承の例

class Person1 {
    public String name="xiaoli";
    public int age=19;

}

class Student extends Person1 {
    void study() {//有一个study的方法,表示这个人可以学习
        System.out.println("I can study!");
    }
}

public class JiCheng {
    public static void main(String args[]) {
        Student stu = new Student();
        stu.study();
        //stu.name = "zhangsan";
        //stu.age = 20;
        System.out.println("姓名:" + stu.name + "\n" + "年龄:" + stu.age);
    }
}
//虽然student类中并没有声明这个studentde姓名和年龄,但是因为继承了person1,所以实例化后同样输出了年龄和姓名

 

I can study!
姓名:xiaoli
年龄:19

3:ポリモーフィズム


多型のオブジェクトは、親クラスの継承で定義されたサブクラスの後にプロパティまたはメソッドを参照するには、異なるデータ型を持っているか、異なる挙動を示すことができます。

我々はコードを使用し、次の自動遷移多形転移及び必須と理解されるべき
二つの間に存在すること、または継承関係(インターフェース)を実装する:条件は

class AllAnimal{
    public void speak(){
        System.out.println("我们都会动物");
    }
}



class Cat extends AllAnimal{
    public void speak(){
        System.out.println("我是猫")
    }
}




class Fish extends AllAnimal{
    public void speak(){
        System.out.println("我是鱼");
    }
    
    public void canDo(){
        System.out.println("我会游泳");
    }
}

これは、サブクラスオブジェクト参照の親クラス、すなわち自動上向きの遷移を生成します。

public static void main(String[]args){
    AllAnimal a=new Cat();
    a.speak();      //我是猫

 自動アップキャストの例:

AllAnimal a = new Fish();
a.speak();//我是鱼

 分析:ヒープ内のスペースを開きますが、それは魚をサブクラス化する時点で新しい魚()オブジェクト名への参照AllAnimal、新しい魚を()。最初AllAnimalクラスのfind話す()メソッドを行くコンパイル時、この方法が発見され、その後、コンパイルします。

しかし:

AllAnimal a = new Fish();
a.canDo();   //报错

 分析:CANDO()メソッドは、サブクラスが上昇する中、新たな方法であり、最初は()メソッドCANDOでAllAnimalへのコンパイル時がありますが、コンパイラが通過しないので、見つけることができませんでした。

したがって、親クラスダウン遷移サブクラスへの参照を追加するために使用することができる作るために導入されます。

AllAnimal a = new Fish();
a.speak();
//强制向下转型
Fish a1 = (Fish)a;
a1.canDo();

4:オーバーロードを(オーバーロード)

  •     メソッドのオーバーロードは、データ手段の種類を処理するための統一的な方法でクラスをさせることです。
  •     クラスメソッドを複数作成し、それらが同じ名前を持っていますが、異なるパラメータと異なる定義を持つことができます。*によってそれらに渡されるメソッド呼び出しのパラメータおよびパラメータタイプの異なる多数の特定の使用どの方法を決定することを。
  •     戻り値の同じ型であってもよいことは特徴的な基準として、入力されたオーバーロードされた関数を返すことがない、同じではないかもしれません。

        リライト(オーバーライド)

  •     親クラスのサブクラスを書き換えました。その親クラスのサブクラスのメソッドを持っている場合は、同じメソッド名、戻り値の型およびパラメータリストを、私たちは、メソッドがオーバーライドされていることを言います。
  •     親クラスのために、任意のオリジナルな方法は、現在のクラスの父を引用superキーワードを使用します。
  •     アクセス権限サブクラス機能を変更すると、親クラスよりも低くすることはできません。

 

ファイブ.instanceofキーワード

if (a instanceof Cat) {

           System.out.println(true);

           // 类型的转换

       }else{

           System.out.println(false);

       }

決定するように構成された:彼らは、その後場合はfalseを返していない場合、オブジェクトは後者のタイプに属しているかどうかを、trueを返します

公開された31元の記事 ウォンの賞賛1 ビュー1249

おすすめ

転載: blog.csdn.net/qq_45824565/article/details/104779237
おすすめ