1. Was ist objektorientiert?
Objektorientiert (OO) ist eine gängige Methode zum Entwurf von Programmstrukturen.
Die Grundlage des objektorientierten Denkens besteht darin, verwandte Daten und Methoden zu einem neuen zusammengesetzten Datentyp zusammenzufassen und dann den neu erstellten zusammengesetzten Datentyp als Grundlage für das Projekt zu verwenden.
Objektorientiert ist ein sehr abstraktes Konzept, das relativ zu prozessorientiert ist.
Prozesse und Objekte sind beides Ideen zur Lösung von Problemen.
Prozedurorientiert: Betont funktionales Verhalten, einen Prozess, was zuerst und was als nächstes zu tun ist;
Objektorientiert: Kapselt Funktionen in Objekte, betont, dass ein bestimmtes Funktionsobjekt vorhanden ist;
Nach objektorientiertem Denken kann alles als Objekt betrachtet werden!
Drei Merkmale der Objektorientierung:
Kapselung;
Polymorphismus (Polymorphismus).
Meine Zusammenfassung:Prozessorientiert: Betonung der Implementierung spezifischer Funktionen; (Ausführer)
Objektorientiert: Betonung der Fähigkeit zur Funktionalität Objekt. (Manager)
2. KlasseEine Klasse ist die kleinste Programmiereinheit der Java-Sprache und die Grundlage für das Entwerfen und Implementieren von Java-Programmen Vertiefen Sie das relevante Wissen der Klasse.
Das Konzept der Klasse
Eine Klasse ist eine Beschreibung der gemeinsamen Merkmale und Funktionen einer Gruppe von Dingen. Eine Klasse ist eine Gesamtbeschreibung einer Gruppe von Dingen. Sie ist die kleinste Einheit beim Entwerfen nach objektorientierter Technologie und gleichzeitig das grundlegendste Modul, aus dem ein Projekt besteht. Das Konzept der Klasse ist abstrakt, ähnlich wie Zeichnungen im Architekturdesign, und eine Abstraktion des spezifischen Inhalts, der in der Realität dargestellt werden muss. Klassen enthalten nur Skelettstrukturen, keine spezifischen Daten. Die Klasse repräsentiert also das Ganze und nicht ein bestimmtes Individuum.
: Klassen sind abstrakt, Objekte sind konkret und real! Klassendefinition:
[Modifikator] Klasse Klassenname {
1~n Konstruktionsmethoden;
0~n Felder;
0~n Methoden
}
definiert eine Klasse, die tatsächlich die Objekte in der Klasse definiert
Das Objekt enthält:
state (Attribute). )
Funktion, Verhalten; (Methode)
Beschreiben Sie Objekte durch Klassen;
Funktion , Verhalten - Methode;
ZB:
class Person{ //属性 private String name; private int age; private int sal; //方法 public void show(){ System.out.println("个人情况:"+name+age+sal); } }
3. Konstruktionsmethode
Konstruktionsmethode: Zum Erstellen einer Instanz einer Klasse (jede Klasse verfügt standardmäßig über einen parameterlosen Konstruktor, der mit new aufgerufen werden muss) Feld: die in der Klasse oder dem Objekt enthaltenen Daten, eine Beschreibung des Klassenstatus; Methode: Eigenschaften oder Verhalten einer Klasse oder eines Objekts
Funktion:
Felder in einer Klasse initialisieren und können zum Erstellen von Objekten verwendet werden.
Eigenschaften:
Der Methodenname ist derselbe wie der Klassenname
Keine Notwendigkeit, den Rückgabewerttyp zu definieren
Keine Notwendigkeit, eine Rückgabe zu schreiben Anweisung
Hinweis:
Eigenschaften des Standardkonstruktors.
Es gibt mehrere Konstruktoren in Form von Überladung. Überladung der Konstruktormethode: (Passen Sie die benötigte Methode an und rufen Sie welche auf)
this([aktueller Parameter]); ruft die Konstruktormethode der aktuellen Klasse auf
Beachten Sie, dass
: this([tatsächlicher Parameter]); in der ersten Zeile des Konstruktors platziert werden muss
Objektgenerierungsformat: Klassenname Objektname = neuer Klassenname ();
Da es () gibt, handelt es sich tatsächlich um einen Konstruktor und es handelt sich um einen nicht privaten Konstruktor. Zum Beispiel:
CellPhone cp = new CellPhone();
Funktionen:
Wird geladen, wenn die Klasse geladen wird
Priorität für Objektexistenz
Von allen gemeinsam genutzten Objekten belegt
kann direkt über den Klassennamen aufgerufen werden
Verwendungshinweise:
Statische Methoden können nur auf statische Mitglieder zugreifen
Aber nicht statische Member-Methoden können auf statische Member zugreifen
Dies kann nicht in statischen Methoden verwendet werden, und das Super-Schlüsselwort
Die Hauptmethode (main) ist statisch (Sie können Verwenden Sie den Klassennamen, um die statische Hauptmethode aufzurufen. Sie gerät jedoch in eine Endlosschleife, was zu einem Speicherüberlauf und einem automatischen Stopp des JVM führt ){}
Kann Felder und Methoden ändern.
Ein mit static geändertes Mitglied bedeutet, dass es zu dieser Klasse gehört und nicht zu einer einzelnen Instanz der Klasse.
statisch modifizierte Felder == Klassenfelder
statisch modifizierte Methoden == Klassenmethoden
Felder und Methoden, die nicht statisch modifiziert sind, Mitglieder gehören zu einer einzelnen Instanz der Klasse Gehört nicht zur Klasse.
Keine statisch geänderten Felder == Instanzfelder
Keine statisch geänderten Methoden == Instanzmethoden
Klassen- und Instanzzugriffsfelder und -methode Syntax:
Auf Klassenmitglieder zugreifen: Class.Field Class.Method
Auf Instanzmitglieder zugreifen: Instance.Field Instance.Method
Meine Zusammenfassung: Statisch geänderte Felder und Methoden können über Klassen oder Instanzen aufgerufen werden;
Felder und Methoden ohne statische Änderung können nur über Instanzen aufgerufen werden (empfohlene Verwendung: Klassenname zum Aufrufen; Tatsächlich am Unterste Ebene: Wenn ein Objekt ein Klassenmitglied aufruft, wird auch der Klassenname konvertiert)
Das Schlüsselwort static kann nicht gleichzeitig mit this und super verwendet werden!
Ein Objekt ohne Namen, erstellt ein Objekt und weist es keiner Variablen zu;
Funktionen:
Wenn eine Methode oder ein Feld nur einmal aufgerufen wird, kann
als tatsächlicher Parameter übergeben werden; 🎜 >Öffnen Sie nur einen Speicherbereich im Haufen,
kann nur einmal verwendet werden und wird nach der Verwendung zerstörtWann sollte es verwendet werden? Benutzen Sie es nur einmal! ! new Person(); stellt ein anonymes Objekt dar, ein Objekt ohne Namen
new Person().age = 17;//使用一次之后就被销毁了
6、this关键字
特点:this表示当前对象。
当前对象 ←→ 当前正在调用实例成员的对象
换言之:谁调用了方法,谁就是当前对象。
什么时候使用this关键字呢?
方法间的相互调用;
this.字段;
构造器中相互调用,但是此时this([参数])必须写在构造方法第一行。
this不能用在static修饰的方法里和static修饰的代码块里;
Eg:构造方法中的this.name = name;
7、面向对象之封装
封装的两个含义:
1.把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的模块中(类);
2."信息隐藏", 把不需要让外界知道的信息隐藏起来,尽可能隐藏对象功能实现细节,字段;
封装机制在程序中的体现是:
把描述对象的状态用字段表示,描述对象的行为用方法表示,把字段和方法定义在一个类中,并保证外界不能任意更改其内部的字段值,也不允许任意调动其内部的功能方法。
程序中的一种体现:
通常将类中的成员变量私有化(private),通过对外提供方法(setXxx,getXxx),可对该变量(xxx)进行访问。
boolean 类型的变量没有getXX,只有 isXX;
Eg: class Person1{ private String name; private int age; private int sal; 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; } }
8、访问修饰符
private 类访问权限:本类内部可以访问,不能继承到子类;
default 什么都不写,包访问权限:本类内部可以访问,同包其他类也可以访问,同包可继承;
protected 子类访问权限:本类内部可以访问,不同包的子类也可以访问,同包其他类也可以访问,能继承到子类;
public 公共访问权限:任何地方都可以访问,能继承到子类;
总结:
9. Analyse des Klassendesigns
Analyseideen:
Schreiben Sie Klassen entsprechend den Anforderungen Felder;
Alle Felder müssen privatisiert werden;
Gekapselte Felder können über Setter und Getter festgelegt und abgerufen werden;
>Entsprechende Methoden können je nach Bedarf hinzugefügt werden
Alle Methoden in der Klasse sollten nicht direkt verarbeitet werden (Ausgabe und Druck), sondern sollten dem Aufrufer zur Verarbeitung überlassen werden.
10. Objektorientierte VererbungZuerst gibt es Klassen, die die Eigenschaften allgemeiner Dinge widerspiegeln, und dann auf dieser Basis Klassen, die spiegeln die Eigenschaften besonderer Dinge wider ;
Mit anderen Worten: Vererbung ist eine Beziehung vom Allgemeinen zum Besonderen;
Merkmale
:1. Verbesserte Wiederverwendbarkeit des Codes.
2. Erstellen Sie eine Beziehung zwischen Klassen. Nur mit dieser Vererbungsbeziehung können wir die Merkmale des Polymorphismus erreichen.
3. Die Java-Sprache unterstützt nur die Einzelvererbung (anders als die C-Sprache).
Da Mehrfachvererbung leicht Sicherheitsrisiken mit sich bringen kann (wenn es zu viele übergeordnete Klassen gibt und die Funktionen gleich sind, entsteht dann Unsicherheit beim Aufruf? Überschreiben einer Methode, wer überschreibt sie?).
ps: Die Schnittstelle kann Mehrfachvererbung implementieren4. Java unterstützt die mehrstufige Vererbung. Object ist die Superklasse jeder Klasse und implementiert eine Baumstruktur.
Meine Zusammenfassung:
Vererbung ist die Voraussetzung für Polymorphismus.
Für Klassen wird nur Einzelvererbung unterstützt.
Format:
[Modifikator] Klasse Unterklasse erweitert SuperKlasse
Gemäß dieser Beziehung sind wir Die SuperKlasse Die Klasse wird als übergeordnete Klasse oder Basisklasse bezeichnet, und die Unterklasse wird als Unterklasse, abgeleitete Klasse oder erweiterte Klasse bezeichnet.
Meine Zusammenfassung:
java.lang.Object Es ist die übergeordnete Klasse aller Klassen.
Das Objekt ist entweder eine direkte übergeordnete Klasse oder eine indirekte übergeordnete Klasse.
ZB:
Schüler sind ein Sonderfall von Menschen. Zu diesem Zeitpunkt schreibe ich die gemeinsamen Merkmale von Menschen in der Personenklasse, damit die Schüler diese gemeinsamen Merkmale haben (andere, (z. B. Lehrer, können ebenfalls diese Gemeinsamkeiten aufweisen), dann bitte ich die Schüler, die Kategorie „Person“ zu erweitern.
Meine Zusammenfassung:
Die Beziehung zwischen Unterklasse und Elternklasse:
Unterklasse erweitert Elternklasse (Unterklasse ist ein Sonderfall der Elternklasse)
Hauptsächlich basierend auf der übergeordneten Klasse, und fügen Sie dann Ihre eigenen Felder und Methoden hinzu.
Die privaten Mitglieder der übergeordneten Klasse können nicht von Unterklassen geerbt werden.
Die Konstruktionsmethode der übergeordneten Klasse kann nicht vererbt werden.
Java unterstützt nur die Einzelvererbung, nicht die Mehrfachvererbung Vererbung;/ /Ansonsten, wenn die Show-Methode beispielsweise mehrere Methoden erbt, weiß ich nicht, welche ich aufrufen soll.
Eine Klasse hat nur eine direkte übergeordnete Klasse
Wenn eine Klasse nicht explizit von einer anderen Klasse erbt, ist die standardmäßige direkte übergeordnete Klasse die Objektklasse Die direkte übergeordnete Klasse von Student ist Person, und die Object-Klasse ist auch die übergeordnete Klasse von Student, ist jedoch eine indirekte übergeordnete Klasse.
Sobald eine Klasse explizit eine andere Klasse erbt, ist dies die standardmäßige direkte übergeordnete Klasse Objekt wird abgebrochen;
Eine Klasse in Java kann nur eine direkte übergeordnete Klasse haben;
java.lang.Object ist die übergeordnete Klasse aller Klassen. Object ist entweder eine direkte übergeordnete Klasse oder eine indirekte übergeordnete Klasse.
Der Instanziierungsprozess von Unterklassenobjekten
In der Vererbungsoperation für die Instanziierung von Unterklassenobjekten:
Das Unterklassenobjekt muss zuerst die übergeordnete Klasse aufrufen, bevor der Konstruktor der Instanziierung erfolgt und ruft dann seinen eigenen Konstruktor auf.
Das Obige ist Teil des Inhalts dieses Artikels. Ich werde auch in Zukunft objektorientiertes Wissen für Sie organisieren. Bitte weisen Sie darauf hin, dass etwas nicht stimmt, danke!
Weitere verwandte Fragen finden Sie auf der chinesischen PHP-Website: JAVA-Video-Tutorial
Das obige ist der detaillierte Inhalt vonJava - ausführliche Einführung in objektorientierte (1). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!