Klasse und Objekt

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden Sie ein sehr wichtiges Programmierkonzept kennenlernen: die objektorientierte Programmierung (object-oriented programming). Sie müssen den Unterschied zwischen Klasse (class) und Objekt (object) verstehen. Üben Sie intensiv, um ein besseres Verständnis zu entwickeln.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/ProgrammingTechniquesGroup -.-> java/method_overloading("Method Overloading") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/constructors("Constructors") subgraph Lab Skills java/method_overloading -.-> lab-178544{{"Klasse und Objekt"}} java/classes_objects -.-> lab-178544{{"Klasse und Objekt"}} java/constructors -.-> lab-178544{{"Klasse und Objekt"}} end

Klasse und Objekt

Es gibt viele Programmiersprachen und fast ebenso viele Programmierstile (manchmal auch Paradigmen genannt). Die Programme, die wir bisher geschrieben haben, sind hauptsächlich prozedural, da der Schwerpunkt auf der Angabe von Rechenprozeduren lag. Die meisten Java-Programme sind objektorientiert, was bedeutet, dass der Fokus auf Objekten und deren Interaktionen liegt. Hier sind einige Merkmale der objektorientierten Programmierung:

Objekte repräsentieren oft Entitäten aus der realen Welt. Die meisten Methoden sind Objektmethoden (wie die Methoden, die Sie auf String-Objekten aufrufen) und nicht Klassenmethoden (wie die Math-Methoden). Die Methoden, die wir bisher geschrieben haben, waren Klassenmethoden. In diesem Kapitel werden wir einige Objektmethoden schreiben.

Objekte sind voneinander isoliert, indem die Art ihrer Interaktion begrenzt wird, insbesondere indem verhindert wird, dass sie auf Instanzvariablen zugreifen, ohne Methoden aufzurufen. Klassen sind in Stammbäumen organisiert, in denen neue Klassen bestehende Klassen erweitern, neue Methoden hinzufügen und andere ersetzen.

In Java erweitert jede Klasse eine andere Klasse, außer die Klasse Object. Die grundlegendste Klasse ist die Object-Klasse. Sie enthält keine Instanzvariablen, aber sie bietet unter anderem die Methoden equals und toString.

Viele Klassen erweitern Object, darunter fast alle Klassen, die wir geschrieben haben, und viele Java-Typen wie Integer, Double, String, Arrays usw. Jede Klasse, die nicht explizit einen Elternteil angibt, erweitert standardmäßig Object. Der "Stammbaum" der Klassen wird Klassenhierarchie genannt. Object erscheint normalerweise ganz oben, mit allen Kindklassen darunter.

Klassen und Objekte haben normalerweise einige Attribute, die verwendet werden, um diese Klassen/Objekte zu beschreiben, und die Methoden werden verwendet, um bestimmte Funktionen auszuführen. Hier geben wir Ihnen ein Beispiel, um Ihnen zu zeigen, wie eine Klasse aussieht. Speichern Sie den Code in objectTest.java und führen Sie ihn über die Befehlszeile aus.

Beispiel:

Schreiben Sie den folgenden Code in die Datei /home/labex/project/objectTest.java:

// use keyword 'class' to create a new class named Person
class Person
{
    /*
     * there are four properties,
     * name of string type, age of int type
     * gender of string type, weight of float type
    */
    private String name;
    private int age;
    private String gender;
    private float weight;
    // this is a constructor with no return type, the same name as the class, no parameters
    public Person(){

    }
    //this is a constructor with two parameters
    public Person(String name, int age){
        // use parameters to set object's name and age
        this.name = name;
        this.age = age;
    }
    // this is a constructor with four parameters
    public Person(String name, int age, String gender, float weight){
        // use parameters to set object's name, age, gender and weight
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.weight = weight;
    }
       // this is an object method
    public void personInfo(){
        System.out.println("Name: " + this.name + "\nAge: "+ this.age + "\nGender: " + this.gender + "\nWeight: "+this.weight);
    }
}

public class objectTest{
    public static void main(String[] args){
        // use 'new' to create an instance of class Person
        Person p = new Person("aaa",18,"male",50.5f);  // p refers to  an object
        /* you can try these two different construction methods, and see what the output is.
         * Person p  = new Person();
         * Person p = new Person("aaa",18);
        */
        // use object to invoke method personInfo()
        p.personInfo();
    }
}

Ausgabe:

Führen Sie die Datei objectTest.java mit den folgenden Befehlen aus:

javac /home/labex/project/objectTest.java
java objectTest

Sehen Sie sich die Ausgabe an:

Name: aaa
Age: 18
Gender: male
Weight: 50.5

Die Person-Klasse hat vier Attribute. Alle Attribute sind privat, sodass sie von außen nicht zugänglich sind (können nur innerhalb der Klasse verwendet werden). Es gibt eine Objektmethode namens personInfo, die verwendet wird, um personenbezogene Informationen auszugeben, und es gibt drei Konstruktoren mit demselben Namen wie die Klassenname Person. Der einzige Unterschied zwischen ihnen sind ihre Parameter. Dieses Verhalten wird Überladung (overloading) genannt.

Zusammenfassung

Dieser Teil ist sehr wichtig. Klassen (Classes) sind Abstraktionen von Entitäten mit gemeinsamen Merkmalen, und Objekte (Objects) sind Entitäten mit spezifischen Merkmalen. Sie sollten sich mehr Zeit nehmen, um den oben genannten Programmierstil zu verstehen.