Java-継承-(修飾子)

継承はオブジェクト指向の 3 つの主要な特性の 1 つで、サブクラスが親クラスのプロパティとメソッドを持つことができ、サブクラス内で再定義したり、プロパティやメソッドを追加したりすることもできます。

記事ディレクトリ


序文

        継承の概念:

継承はオブジェクト指向の 3 つの主要な特性の 1 つで、サブクラスが親クラスのプロパティとメソッドを持つことができ、サブクラス内で再定義したり、プロパティやメソッドを追加したりすることもできます。

        継承の利点:

継承により、クラス間の関係、つまり子と親のクラス関係が作成される可能性があり、子と親のクラスが生成された後、子クラスは親クラスの非プライベート メンバーを使用できるようになります。 


提示:以下是本篇文章正文内容,下面案例可供参考

1. 修飾子とは何ですか?

パッケージ (理解): 

        1. パッケージの概念. パッケージは、クラス ファイルを管理するために使用されるフォルダーです。 

        2. パッケージ定義形式 package パッケージ名; (複数レベルのパッケージを区切るには . を使用します) 例: package com.heima.demo; 

        3. パッケージでコンパイルし、パッケージで実行 パッケージでコンパイル: javac -d . クラス名.java 例: javac -d . com.heima.demo.HelloWorld.java パッケージで実行: java パッケージ名 + クラス名 

例: java com.heima.demo.HelloWorld 

2. 利用手順

1.書き換えて使う

        以下に 3 つの新しいクラス (1 つの親クラスと 2 つのサブクラス) が作成されます。

親クラスのコードは次のとおりです(例)。

package com.xxgc.ch02_2.po;
//人类
public class Person {
    //静态常量:值不可被改变
    //静态使用情况:便于访问,数据共享。
    public final String schoolName="济南信息工程学校";
    private String name;
    private int age;
    //无参构造
    public Person()
    {

    }
    //有参构造
    public Person(String name,int age)
    {
        this.name=name;
        this.age=age;
    }
    //吃饭
    protected void eat() {
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

        以下に Student クラス (学生クラス)、教師クラス (教師クラス) という 2 つのサブクラスを作成します。

学生のクラスコードは次のとおりです。

package com.xxgc.ch02_2.po;

public class Student extends Person{
    public Student()
    {

    }
    public Student(String name,int age)
    {
        super(name,age);
    }
    //重写父类的方法,方法名一样,参数列表也必须一样
    public void eat()
    {
        System.out.println("学生吃肉");
    }
    public void study()
    {
        System.out.println(super.getName()+"学习");
    }
}

        次に教師クラスを作成します

        コードは以下のように表示されます。

package com.xxgc.ch02_2.po;
//老师类
public class Teacher extends Person{
    public Teacher()
    {

    }
    public Teacher(String name,int age)
    {
        super(name,age);
    }
    public void eat()
    {
        System.out.println("老师吃烤鱼");
    }
    public void teach()
    {
        System.out.println(super.getName()+"教课");
    }
}

        リライト:

        上記の 3 つのクラスのうち、サブクラスが親クラスを継承していることに気づいたかどうかはわかりません。ただし、3 つのクラスすべてに存在する同じ名前のメソッド Eat() があります。以上です(書き直し)。

        サブクラスは親クラスを継承しますが、同じメソッドがある場合はサブクラスを使用して呼び出します。サブクラスのメソッドはデフォルトで呼び出されます。例としては、「携帯電話を持っていたとしても、他の人の携帯電話を借りますか?」というものがあります。

        新しいテスト クラスを作成して、上記が間違っているかどうかを判断します。

        テストクラスのコードは次のとおりです。

package com.xxgc.ch02_2.test;

import com.xxgc.ch02_2.po.Student;
import com.xxgc.ch02_2.po.Teacher;

public class PersonDemo {
    public static void main(String[] args) {
        //打印学校名称
        Student stu=new Student();
        stu.setName("扶苏");
        stu.eat();
        String school= stu.schoolName;
        System.out.println(school);
        Teacher t=new Teacher();
        t.eat();

    }
}

      上記のテスト クラスを通じてコードを実行します。オーバーライドされたメソッド Eat() メソッドを呼び出し、2 つのサブクラスの Eat() メソッドをそれぞれ呼び出します。結果は次のようになります。

        実行結果は、上記のステートメントが正しいことを証明します。サブクラスにオーバーライドされたメソッドがあり、それがサブクラスで呼び出される場合、呼び出し元の親クラスではなく、サブクラス自体のメソッドが呼び出されます。 

2.インポート(理解)

インポート (理解):

ガイドパッケージの意味 異なるパッケージ配下のクラスを利用する場合、使用時にクラスのフルパスを記述する必要がありますが、書くのが面倒です パッケージを持ち込む操作を簡略化するために、Javaでは の機能が提供されていますガイド パッケージ: ガイド パッケージの形式 

形式: インポートパッケージ名。 

例: java.util.Scanner をインポートします。 

サンプルコード(インポートパッケージを使用せずに作成したスキャナオブジェクト)         

package com.heima; import java.util.Scanner; public class Demo { 
    public static void main(String[] args) { 
// 1. 没有导包,创建Scnaner对象
     Scanner sc = new Scanner(System.in); 
    } 
}

       1.最終(申請)

           fifianl キーワードの機能 

  •         fifinal は最終的な意味を表し、メンバー メソッド、メンバー変数、およびクラスを変更できます。 
  •         クラス、メソッド、変数を最終的に変更した場合の影響 
  •         fifianl 変更クラス: このクラスは継承できません (サブクラスを持つことはできませんが、親クラスを持つことはできます) 
  •         fifinal 変更メソッド: このメソッドはオーバーライドできません 
  •         fifinal 変更された変数: 変数が定数であり、再度割り当てることができないことを示します。 

        2.fifinal はローカル変数を変更します (理解)     

fifianl は、基本的なデータ型変数を変更します。

  •         fifinal 変更は、基本型のデータ値を変更できないことを意味します。 
  •         fifinal は参照データ型変数を変更します 
  •         ifinal 変更は、参照型のアドレス値は変更できないが、アドレスの内容は変更できることを意味します。 

例: 

public static void main(String[] args){
     final Student s = new Student(23); 
     s = new Student(24); 
    // 错误 s.setAge(24); // 正确 
}

        3.静的 (アプリケーション):   

  • 静的という概念 
  • static キーワードは静的を意味し、[メンバー メソッド] と [メンバー変数] を変更できます。 
  • 静的変更の特徴 
  • 1. クラスのすべてのオブジェクトで共有され、静的キーワードを使用するかどうかを判断する条件でもあります。 
  • 2. もちろんクラス名で呼び出すこともできますし、オブジェクト名で呼び出すことも可能です(クラス名で呼び出すことを推奨します) 

        コードは以下のように表示されます。

class Student {
     public String name; //姓名
     public int age; //年龄 
    public static String university; //学校 共享数据!所以设计为静态!
   public void show() { 
        System.out.println(name + "," + age + "," + university); } 
    }
    public class StaticDemo {
     public static void main(String[] args) { 
    // 为对象的共享数据赋值 
    Student.university = "传智大学"; 
    Student s1 = new Student();
     s1.name = "林青霞"; 
    s1.age = 30;
     s1.show(); 
    Student s2 = new Student();
     s2.name = "风清扬"; 
    s2.age = 33; s2.show(); 
    } 
}

        4.静的アクセス特性(マスター)

  • 静的アクセス特性 
  • 非静的メンバーメソッド 
  • 静的メンバー変数にアクセスできる 
  • 非静的メンバー変数にアクセスできる 
  • 静的メンバーメソッドにアクセスできる 
  • 非静的メンバーメソッドにアクセスできる 
  • 静的メンバーメソッド 
  • 静的メンバー変数にアクセスできる 
  • 静的メンバーメソッドにアクセスできる 
  • 一言でまとめるとこうなります。 
  • 静的メンバーのメソッドは静的メンバーのみにアクセスできます 

要約する

この記事の概要は次のとおりです:
以上が、今日お話しする内容です。この記事では、Java 修飾子の使用法を簡単に紹介するだけであり、Java には、迅速かつ便利に使用できるメソッドが多数提供されています。

おすすめ

転載: blog.csdn.net/qq_68384595/article/details/126954014