Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java meistern: Objekte, Klassen und Kern-OOP-Konzepte verstehen

Java ist eine objektorientierte Sprache. Als Sprache mit objektorientierten Features unterstützt Java folgende fundamentale Konzepte:

In diesem Kapitel betrachten wir die Konzepte Klassen und Objekte.

Objekte in Java

Sehen wir nun genauer, was Objekte sind. In der realen Welt finden wir viele Objekte um uns herum: Autos, Hunde, Menschen usw. All diese Objekte haben einen Zustand und ein Verhalten.

Betrachten wir einen Hund: Sein Zustand ist – Name, Rasse, Farbe – und sein Verhalten – Bellen, Schwanzwedeln, Laufen.

Vergleicht man Softwareobjekte mit realen Objekten, haben sie sehr ähnliche Eigenschaften.

Softwareobjekte haben ebenfalls einen Zustand und ein Verhalten. Der Zustand eines Softwareobjekts wird in Feldern gespeichert und das Verhalten wird über Methoden gezeigt.

In der Softwareentwicklung operieren Methoden auf dem internen Zustand eines Objekts und die Objekt-zu-Objekt-Kommunikation erfolgt über Methoden.

Klassen in Java

Eine Klasse ist eine Blaupause, von der individuelle Objekte erstellt werden.

Folgendes ist ein Beispiel für eine Klasse:

Beispiel

public class Dog {
  String breed;
  int age;
  String color;
  void barking() { }
  void hungry() { }
  void sleeping() { }
}

Eine Klasse kann folgende Variablentypen enthalten:

Eine Klasse kann beliebig viele Methoden haben, um auf die Werte verschiedener Arten von Methoden zuzugreifen. Im obigen Beispiel sind barking(), hungry() und sleeping() Methoden.

Folgende wichtige Themen müssen besprochen werden, wenn man sich Klassen in Java ansieht:

Konstruktoren

Beim Thema Klassen ist einer der wichtigsten Unterpunkte die Konstruktoren. Jede Klasse hat einen Konstruktor. Wenn wir nicht explizit einen Konstruktor für eine Klasse schreiben, erstellt der Java-Compiler einen Standardkonstruktor für diese Klasse.

Jedes Mal, wenn ein neues Objekt erstellt wird, wird mindestens ein Konstruktor aufgerufen. Die Hauptregel für Konstruktoren ist, dass sie denselben Namen wie die Klasse haben müssen. Eine Klasse kann mehr als einen Konstruktor haben.

Folgendes ist ein Beispiel für einen Konstruktor:

Beispiel

public class Puppy {
  public Puppy() { }
  public Puppy(String name) {
    // Dieser Konstruktor hat einen Parameter, name.
  }
}

Java unterstützt auch Singleton-Klassen, bei denen Sie nur eine Instanz einer Klasse erstellen können.

Hinweis – Es gibt zwei verschiedene Arten von Konstruktoren. Wir werden Konstruktoren in den nachfolgenden Kapiteln detailliert besprechen.

Objekt erstellen

Wie bereits erwähnt, stellt eine Klasse die Blaupausen für Objekte bereit. Ein Objekt wird also aus einer Klasse erstellt. In Java wird das Schlüsselwort new verwendet, um neue Objekte zu erstellen.

Es gibt drei Schritte beim Erstellen eines Objekts aus einer Klasse:

Folgendes ist ein Beispiel für die Erstellung eines Objekts:

Beispiel

Live Demo
public class Puppy {
  public Puppy(String name) {
    // Dieser Konstruktor hat einen Parameter, name.
    System.out.println("Passed Name is :" + name);
  }
  public static void main(String []args) {
    // Folgendes Statement würde ein Objekt myPuppy erstellen
    Puppy myPuppy = new Puppy("tommy");
  }
}

Wenn wir das obige Programm kompilieren und ausführen, erhalten wir folgendes Ergebnis:

Ausgabe

Passed Name is :tommy

Zugriff auf Instanzvariablen und Methoden

Instanzvariablen und Methoden werden über erstellte Objekte zugegriffen. Um auf eine Instanzvariable zuzugreifen, ist der vollständig qualifizierte Pfad:

/* Zuerst ein Objekt erstellen */
ObjectReference = new Constructor();
/* Jetzt Variable aufrufen */
ObjectReference.variableName;
/* Jetzt Klassenmethode aufrufen */
ObjectReference.MethodName();

Beispiel

Dieses Beispiel erklärt, wie man auf Instanzvariablen und Methoden einer Klasse zugreift.

Live Demo
public class Puppy {
  int puppyAge;
  public Puppy(String name) {
    System.out.println("Name chosen is :" + name);
  }
  public void setAge(int age) {
    puppyAge = age;
  }
  public int getAge() {
    System.out.println("Puppy's age is :" + puppyAge);
    return puppyAge;
  }
  public static void main(String []args) {
    /* Objekterstellung */
    Puppy myPuppy = new Puppy("tommy");
    /* Klassenmethode aufrufen, um Alter zu setzen */
    myPuppy.setAge(2);
    /* Andere Klassenmethode aufrufen, um Alter zu erhalten */
    myPuppy.getAge();
    /* Instanzvariable direkt zugreifen */
    System.out.println("Variable Value :" + myPuppy.puppyAge);
  }
}

Kompilieren und Ausführen des obigen Programms ergibt:

Ausgabe

Name chosen is :tommy
Puppy's age is :2
Variable Value :2

Quelldatei-Deklarationsregeln

Als letzten Teil dieses Abschnitts betrachten wir die Quelldatei-Deklarationsregeln. Diese Regeln sind essenziell beim Deklarieren von Klassen, import- und package-Statements in einer Quelldatei.

Klassen haben mehrere Zugriffsebenen und es gibt verschiedene Arten von Klassen: abstrakte Klassen, finale Klassen usw. Wir werden all dies im Kapitel über Zugriffsmodifikatoren erklären.

Abgesehen von den oben genannten Klassentypen hat Java auch spezielle Klassen, die innere Klassen (Inner Classes) und anonyme Klassen (Anonymous Classes) genannt werden.

Java Package

Einfach ausgedrückt ist es eine Möglichkeit, Klassen und Interfaces zu kategorisieren. Bei der Entwicklung von Anwendungen in Java werden hunderte von Klassen und Interfaces geschrieben, daher ist die Kategorisierung dieser Klassen ein Muss und macht das Leben viel einfacher.

Import-Statements

In Java, wenn ein vollqualifizierter Name, der das Package und den Klassennamen enthält, angegeben wird, kann der Compiler den Quellcode oder die Klassen leicht finden. Ein Import-Statement ist eine Möglichkeit, dem Compiler den richtigen Ort für die jeweilige Klasse anzugeben.

Zum Beispiel würde die folgende Zeile den Compiler auffordern, alle Klassen im Verzeichnis java_installation/java/io zu laden:

import java.io.*;

Ein einfaches Fallbeispiel

Für unsere Fallstudie erstellen wir zwei Klassen: Employee und EmployeeTest.

Öffnen Sie zuerst den Editor und fügen Sie den folgenden Code hinzu. Dies ist die Employee-Klasse und die Klasse ist öffentlich. Speichern Sie diese Quelldatei als Employee.java.

Die Employee-Klasse hat vier Instanzvariablen: name, age, designation und salary. Die Klasse hat einen explizit definierten Konstruktor, der einen Parameter annimmt.

Beispiel

import java.io.*;
public class Employee {
  String name;
  int age;
  String designation;
  double salary;
  
  // Konstruktor der Klasse Employee
  public Employee(String name) {
    this.name = name;
  }
  
  // Alter des Mitarbeiters zuweisen
  public void empAge(int empAge) {
    age = empAge;
  }
  
  // Bezeichnung zuweisen
  public void empDesignation(String empDesig) {
    designation = empDesig;
  }
  
  // Gehalt zuweisen
  public void empSalary(double empSalary) {
    salary = empSalary;
  }
  
  // Mitarbeiterdetails ausgeben
  public void printEmployee() {
    System.out.println("Name:"+ name);
    System.out.println("Age:" + age);
    System.out.println("Designation:" + designation);
    System.out.println("Salary:" + salary);
  }
}

Wie bereits erwähnt, beginnt die Verarbeitung bei der main-Methode. Daher muss es für die Ausführung dieser Employee-Klasse eine main-Methode geben und Objekte müssen erstellt werden. Wir erstellen eine separate Klasse dafür.

Folgendes ist die EmployeeTest-Klasse, die zwei Instanzen der Klasse Employee erstellt und die Methoden für jedes Objekt aufruft, um Werte für jede Variable zuzuweisen.

Speichern Sie den folgenden Code in EmployeeTest.java.

import java.io.*;
public class EmployeeTest {
  public static void main(String args[]) {
    /* Zwei Objekte mit Konstruktor erstellen */
    Employee empOne = new Employee("James Smith");
    Employee empTwo = new Employee("Mary Anne");
    
    // Methoden für jedes erstellte Objekt aufrufen
    empOne.empAge(26);
    empOne.empDesignation("Senior Software Engineer");
    empOne.empSalary(1000);
    empOne.printEmployee();
    
    empTwo.empAge(21);
    empTwo.empDesignation("Software Engineer");
    empTwo.empSalary(500);
    empTwo.printEmployee();
  }
}

Kompilieren Sie nun beide Klassen und führen Sie EmployeeTest aus, um das folgende Ergebnis zu sehen:

Ausgabe

C:\> javac Employee.java
C:\> javac EmployeeTest.java
C:\> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0

Was kommt als Nächstes?

In der nächsten Sitzung besprechen wir die grundlegenden Datentypen in Java und wie sie bei der Entwicklung von Java-Anwendungen verwendet werden können.

Java

  1. C# Klassen & Objekte: Fundamente für robustes OOP
  2. C++ Klassen & Objekte: Praktischer Leitfaden zur objektorientierten Programmierung
  3. C++ Friend-Funktionen und Friend-Klassen: Zugriffskontrolle meistern
  4. Java Variablen und Literale: Umfassender Leitfaden
  5. Java Klassen und Objekte: Praktischer Leitfaden
  6. Javas final-Schlüsselwort verstehen: Variablen, Methoden und Klassen
  7. Java instanceof-Operator: Ein umfassender Leitfaden
  8. Java abstrakte Klassen und Methoden: Ein umfassender Leitfaden
  9. Java verschachtelte und innere Klassen meistern: Typen, Beispiele und Best Practices
  10. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele