目次
オブジェクト指向の3つの特性(カプセル化、継承、ポリモーフィズム)
親クラススペースは、サブクラスオブジェクトによって生成されます
作成は簡単ではありません。このブログがお役に立てば、メッセージを残してください+いいね!
以下のため のJava 言語、すべてが対象です。実世界のオブジェクトは、プログラミングの世界で抽象的に具現化されています。オブジェクトは、特定の操作を表します。各オブジェクトは最終的に完全なプログラム設計を構成します。これらのオブジェクトは、独立して存在することも、他のオブジェクトから継承することもできます。オブジェクト間の相互作用を通じて、情報が伝達され、プログラム開発が実現されます。
クラスとは何ですか?
クラスはオブジェクトの抽象化であり、オブジェクトのグループの一般的な特性と動作を説明するために使用されます。メンバー変数とメンバーメソッドはクラスで定義できます。メンバー変数はオブジェクトの特性を記述するために使用され、属性とも呼ばれます。メンバーメソッドはオブジェクトの動作を記述するために使用され、略してメソッドと呼ばれます。
public class Student {
//成员变量
private String name;//姓名
private int age;//年龄
//成员方法
//学习的方法
public void study(){
System.out.println("好好学习,天天向上");
}
//吃饭的方法
public void eat(){
System.out.println("干饭人干饭时间");
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
//封装私有变量
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;
}
//带参构造函数
public Student(String name, int age) {
this.name = name;
this.age = age;
}
//无参构造函数
public Student() {
}
オブジェクトとは何ですか?
public static void main(String[] args) {
//创建对象
Student stu1=new Student("张三",9);
Student stu2=new Student("李四",9);
//使用对象访问类中的成员
stu1.setAge(18);
stu1.eat();
stu2.setName("赵四");
stu2.study();
}
オブジェクト指向の3つの特性(カプセル化、継承、ポリモーフィズム)
1つ、パッケージ
カプセル化:カプセル化はオブジェクト指向アプローチの重要な原則です。2つの意味があります。1つはオブジェクトのすべての属性とすべてのサービスを組み合わせて、分割できない独立したユニット(つまり、オブジェクト)を形成することです。2つ目はこれです。意味は情報隠蔽とも呼ばれます。つまり、オブジェクトの内部の詳細を可能な限り隠蔽し、外部との境界を形成し、外部と接触するための限られた外部インターフェイスのみを保持します。
1. privateキーワードを使用して、メンバー変数を変更します
2.アクセスする必要のあるメンバー変数にgetXxxメソッドとSetXxxメソッドのペアを提供します。
public class Student {
//私有成员变量
private String name;//姓名
private int age;//年龄
//提供供外界访问的公有方法
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;
}
}
アクセス修飾子
キーワードthisの意味
- これは、クラスの現在のオブジェクトの参照(アドレス値)、つまりオブジェクト自体の参照を表します。
- メソッドはどのオブジェクトによって呼び出されますか。メソッド内のこれはどのオブジェクトを表します。つまり、誰が呼び出しているか、これは誰を表します。
変数は現在の値をカプセル化し、メソッドはコードと動作をカプセル化し、クラスは両方をカプセル化して、一連の状態と関数を同時に提供します。インターフェイスはメソッドをカプセル化します。
第二に、継承
継承:継承は、ユーザーがクラスに基づいて新しいクラスを構築できるようにする手法です。新しいクラスは、古いクラスの属性と動作特性を自動的に継承し、特定の追加の特性または特定の制限がある場合があります。
継承:サブクラスは親クラスのプロパティと動作を継承するため、サブクラスは親クラスと同じプロパティと動作を持ちます。サブクラスは、親クラスの非プライベートプロパティと動作に直接アクセスできます。
コードの再利用性を向上させます。クラスとクラスの関係は、ポリモーフィズムの前提です。
class 父类{
···
}
class 子类 extends 父类{
···
}
継承後の特性-メンバー変数
異なる名前のメンバー変数がサブクラスの親クラスに表示される場合、コードへのアクセスは効果がありません。
同じ名前のメンバー変数がサブクラスの親クラスに表示される場合は、サブクラスの親クラスの非プライベートメンバー変数にアクセスする必要があります。また、superキーワードを使用して、サブクラスのメンバー変数を変更する必要があります。親クラス。
class Zi extends Fu {
// Zi中的成员变量
int num = 6;
public void show() {
//访问父类中的num
System.out.println("Fu num=" + super.num);
//访问子类中的num
System.out.println("Zi num=" + this.num);
}
}
継承メンバー方式後の特性
別の名前のメンバーメソッドがサブクラスの親クラスに表示される場合、コードへのアクセスは効果がありません。
同じ名前のメンバーメソッドがサブクラスと親クラスに表示される場合、メソッドのオーバーライドがあります(オーバーライド)
メソッドの書き換え:サブクラスに表示されるメソッドは親クラスとまったく同じであり(戻り値の型、メソッド名、パラメーターリストは同じです)、カバレッジ効果が表示されます。ステートメントは変更されず、再実装されたままです。
//父类
class Fu {
public void show() {
System.out.println("Fu show");
}
}
//子类
class Zi extends Fu {
//子类重写了父类的show方法
public void show() {
System.out.println("Zi show");
}
}
//测试类ExtendsDemo
public class ExtendsDemo{
public static void main(String[] args) {
Zi z = new Zi();
// 子类中有show方法,只执行重写后的show方法
z.show(); // Zi show
}
}
スーパーとこれの意味
- super:親クラスのストレージスペース識別子を表します。これはメソッドにのみ表示できます(親クラスの参照を理解します)。
- this:現在のオブジェクト(誰が誰に代わってそれを呼び出すか)の参照を表します。
親クラススペースは、サブクラスオブジェクトによって生成されます
サブクラスオブジェクトを作成するたびに、最初に親クラススペースを初期化し、次にサブクラスオブジェクト自体を作成します。目的は、サブクラスオブジェクトに対応する親クラススペースが含まれているため、親クラスのメンバーを含めることができます。親クラスのメンバーが非公開で変更されていない場合、サブクラスは親クラスのメンバーを自由に使用できます。コードはサブクラスの構築メソッド呼び出しに反映されます。最初に親クラスの構築メソッドを呼び出す必要があります。
三、ポリモーフィズム
ポリモーフィズム:メッセージを受信したときにオブジェクトが応答する必要があります。同じメッセージを受信したときにオブジェクトが異なれば、まったく異なる結果が生成される可能性があります。この現象はポリモーフィズムと呼ばれます。
多型が存在するための条件:
- 1.継承関係があります
- 2.メソッドを書き直す必要があります
- 3.親クラスの参照は子クラスを指します
//子类的引用 指向——> 子类
父类类型 变量名 = new 子类对象;
变量名.方法名();
親タイプ:サブクラスオブジェクトが親タイプを継承するか、親インターフェイスタイプを実装することを指します。ポリモーフィズムはメソッドのポリモーフィズムであり、属性にポリモーフィズムはありません。
//抽象的父类
public abstract class Animal {
public abstract void eat();
}
//子类Cat
class Cat extends Animal {
public void eat() {
System.out.println("吃鱼");
}
}
//子类Dog
class Dog extends Animal {
public void eat() {
System.out.println("吃骨头");
}
}
//测试类Test
public class Test {
public static void main(String[] args) {
// 多态形式,创建对象
Animal a1 = new Cat();
// 调用的是 Cat 的 eat
a1.eat();
// 多态形式,创建对象
Animal a2 = new Dog();
// 调用的是 Dog 的 eat
a2.eat();
}
}
ポリモルフィックコードでは、メンバーメソッドのアクセスルールは次のとおりです。新しい人を確認し、最初の人を使用し、誰もいないかどうかを調べます。