Java - Objekt und Klassen

Java ist eine objektorientierte Sprache. Als Sprache mit der objektorientierten Funktion unterstützt Java die folgenden grundlegenden Konzepte:

  • Polymorphism
  • Inheritance
  • Encapsulation
  • Abstraction
  • Classes
  • Objects
  • Instance
  • Method
  • Nachrichtenübermittlung

In diesem Kapitel werden wir uns mit den Konzepten befassen - Klassen und Objekte.

  • Object- Objekte haben Zustände und Verhaltensweisen. Beispiel: Ein Hund hat Zustände - Farbe, Name, Rasse sowie Verhalten - mit dem Schwanz wedeln, bellen, essen. Ein Objekt ist eine Instanz einer Klasse.

  • Class - Eine Klasse kann als Vorlage / Blaupause definiert werden, die das Verhalten / den Status beschreibt, den das Objekt seines Typs unterstützt.

Objekte in Java

Lassen Sie uns nun tief in die Objekte schauen. Wenn wir die reale Welt betrachten, können wir viele Objekte um uns herum finden, Autos, Hunde, Menschen usw. Alle diese Objekte haben einen Zustand und ein Verhalten.

Wenn wir einen Hund betrachten, dann ist sein Zustand - Name, Rasse, Farbe und das Verhalten - bellen, mit dem Schwanz wedeln, rennen.

Wenn Sie das Softwareobjekt mit einem realen Objekt vergleichen, weisen diese sehr ähnliche Eigenschaften auf.

Softwareobjekte haben auch einen Zustand und ein Verhalten. Der Status eines Softwareobjekts wird in Feldern gespeichert und das Verhalten über Methoden angezeigt.

In der Softwareentwicklung arbeiten Methoden also mit dem internen Zustand eines Objekts, und die Objekt-zu-Objekt-Kommunikation erfolgt über Methoden.

Klassen in Java

Eine Klasse ist eine Blaupause, aus der einzelne Objekte erstellt werden.

Es folgt ein Beispiel einer Klasse.

Beispiel

public class Dog {
   String breed;
   int age;
   String color;

   void barking() {
   }

   void hungry() {
   }

   void sleeping() {
   }
}

Eine Klasse kann einen der folgenden Variablentypen enthalten.

  • Local variables- Variablen, die in Methoden, Konstruktoren oder Blöcken definiert sind, werden als lokale Variablen bezeichnet. Die Variable wird innerhalb der Methode deklariert und initialisiert, und die Variable wird zerstört, wenn die Methode abgeschlossen ist.

  • Instance variables- Instanzvariablen sind Variablen innerhalb einer Klasse, jedoch außerhalb einer Methode. Diese Variablen werden initialisiert, wenn die Klasse instanziiert wird. Auf Instanzvariablen kann innerhalb einer beliebigen Methode, eines Konstruktors oder von Blöcken dieser bestimmten Klasse zugegriffen werden.

  • Class variables - Klassenvariablen sind Variablen, die innerhalb einer Klasse außerhalb einer Methode mit dem Schlüsselwort static deklariert werden.

Eine Klasse kann über eine beliebige Anzahl von Methoden verfügen, um auf den Wert verschiedener Arten von Methoden zuzugreifen. Im obigen Beispiel sind Bellen (), Hunger () und Schlafen () Methoden.

Im Folgenden sind einige wichtige Themen aufgeführt, die beim Betrachten von Klassen der Java-Sprache behandelt werden müssen.

Konstruktoren

Eines der wichtigsten Unterthemen bei der Diskussion über Klassen wären Konstruktoren. Jede Klasse hat einen Konstruktor. Wenn wir keinen Konstruktor für eine Klasse explizit 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 von Konstruktoren lautet, dass sie denselben Namen wie die Klasse haben sollten. Eine Klasse kann mehr als einen Konstruktor haben.

Das Folgende ist ein Beispiel eines Konstruktors -

Beispiel

public class Puppy {
   public Puppy() {
   }

   public Puppy(String name) {
      // This constructor has one parameter, name.
   }
}

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

Note- Wir haben zwei verschiedene Arten von Konstruktoren. Wir werden die Konstruktoren in den folgenden Kapiteln ausführlich besprechen.

Ein Objekt erstellen

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

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

  • Declaration - Eine Variablendeklaration mit einem Variablennamen mit einem Objekttyp.

  • Instantiation - Das Schlüsselwort 'new' wird zum Erstellen des Objekts verwendet.

  • Initialization- Auf das Schlüsselwort 'new' folgt ein Aufruf eines Konstruktors. Dieser Aufruf initialisiert das neue Objekt.

Das Folgende ist ein Beispiel für das Erstellen eines Objekts -

Beispiel

public class Puppy {
   public Puppy(String name) {
      // This constructor has one parameter, name.
      System.out.println("Passed Name is :" + name );
   }

   public static void main(String []args) {
      // Following statement would create an object myPuppy
      Puppy myPuppy = new Puppy( "tommy" );
   }
}

Wenn wir das obige Programm kompilieren und ausführen, wird das folgende Ergebnis erzielt:

Ausgabe

Passed Name is :tommy

Zugriff auf Instanzvariablen und -methoden

Auf Instanzvariablen und -methoden wird über erstellte Objekte zugegriffen. Um auf eine Instanzvariable zuzugreifen, folgt der vollständig qualifizierte Pfad:

/* First create an object */
ObjectReference = new Constructor();

/* Now call a variable as follows */
ObjectReference.variableName;

/* Now you can call a class method as follows */
ObjectReference.MethodName();

Beispiel

In diesem Beispiel wird erläutert, wie Sie auf Instanzvariablen und Methoden einer Klasse zugreifen.

public class Puppy {
   int puppyAge;

   public Puppy(String name) {
      // This constructor has one parameter, 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) {
      /* Object creation */
      Puppy myPuppy = new Puppy( "tommy" );

      /* Call class method to set puppy's age */
      myPuppy.setAge( 2 );

      /* Call another class method to get puppy's age */
      myPuppy.getAge( );

      /* You can access instance variable as follows as well */
      System.out.println("Variable Value :" + myPuppy.puppyAge );
   }
}

Wenn wir das obige Programm kompilieren und ausführen, wird das folgende Ergebnis erzielt:

Ausgabe

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

Regeln für die Deklaration von Quelldateien

Lassen Sie uns als letzten Teil dieses Abschnitts nun die Deklarationsregeln für Quelldateien untersuchen. Diese Regeln sind wichtig, wenn Klassen, Importanweisungen und Paketanweisungen in einer Quelldatei deklariert werden .

  • Es kann nur eine öffentliche Klasse pro Quelldatei geben.

  • Eine Quelldatei kann mehrere nicht öffentliche Klassen haben.

  • Der Name der öffentlichen Klasse sollte auch der Name der Quelldatei sein, an die angehängt werden soll .javaAm Ende. Beispiel: Der Klassenname lautet public class Employee {}, dann sollte die Quelldatei Employee.java sein.

  • Wenn die Klasse in einem Paket definiert ist, sollte die Paketanweisung die erste Anweisung in der Quelldatei sein.

  • Wenn Importanweisungen vorhanden sind, müssen sie zwischen der Paketanweisung und der Klassendeklaration geschrieben werden. Wenn keine Paketanweisungen vorhanden sind, sollte die Importanweisung die erste Zeile in der Quelldatei sein.

  • Import- und Paketanweisungen beziehen sich auf alle in der Quelldatei vorhandenen Klassen. Es ist nicht möglich, unterschiedliche Import- und / oder Paketanweisungen für verschiedene Klassen in der Quelldatei zu deklarieren.

Klassen haben mehrere Zugriffsebenen und es gibt verschiedene Arten von Klassen. abstrakte Klassen, Abschlussklassen usw. All dies werden wir im Kapitel über Zugriffsmodifikatoren erläutern.

Neben den oben genannten Klassentypen verfügt Java auch über einige spezielle Klassen, die als innere Klassen und anonyme Klassen bezeichnet werden.

Java-Paket

Mit einfachen Worten, es ist eine Möglichkeit, die Klassen und Schnittstellen zu kategorisieren. Bei der Entwicklung von Anwendungen in Java werden Hunderte von Klassen und Schnittstellen geschrieben. Daher ist die Kategorisierung dieser Klassen ein Muss und erleichtert das Leben erheblich.

Anweisungen importieren

Wenn in Java ein vollständig qualifizierter Name angegeben wird, der das Paket und den Klassennamen enthält, kann der Compiler den Quellcode oder die Quellklassen leicht finden. Mit der Importanweisung kann der Compiler den richtigen Speicherort angeben, um diese bestimmte Klasse zu finden.

In der folgenden Zeile wird der Compiler beispielsweise aufgefordert, alle im Verzeichnis java_installation / java / io - verfügbaren Klassen zu laden.

import java.io.*;

Eine einfache Fallstudie

Für unsere Fallstudie werden wir zwei Klassen erstellen. Sie sind Employee und EmployeeTest.

Öffnen Sie zuerst den Notizblock und fügen Sie den folgenden Code hinzu. Denken Sie daran, dass dies die Employee-Klasse und die Klasse eine öffentliche Klasse ist. Speichern Sie nun diese Quelldatei unter dem Namen Employee.java.

Die Employee-Klasse verfügt über vier Instanzvariablen - Name, Alter, Bezeichnung und Gehalt. Die Klasse hat einen explizit definierten Konstruktor, der einen Parameter akzeptiert.

Beispiel

import java.io.*;
public class Employee {

   String name;
   int age;
   String designation;
   double salary;

   // This is the constructor of the class Employee
   public Employee(String name) {
      this.name = name;
   }

   // Assign the age of the Employee  to the variable age.
   public void empAge(int empAge) {
      age = empAge;
   }

   /* Assign the designation to the variable designation.*/
   public void empDesignation(String empDesig) {
      designation = empDesig;
   }

   /* Assign the salary to the variable	salary.*/
   public void empSalary(double empSalary) {
      salary = empSalary;
   }

   /* Print the Employee details */
   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 in diesem Lernprogramm erwähnt, beginnt die Verarbeitung mit der Hauptmethode. Damit wir diese Employee-Klasse ausführen können, sollte es eine Hauptmethode geben und Objekte sollten erstellt werden. Wir werden eine separate Klasse für diese Aufgaben erstellen.

Es folgt 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 der Datei EmployeeTest.java.

import java.io.*;
public class EmployeeTest {

   public static void main(String args[]) {
      /* Create two objects using constructor */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      // Invoking methods for each object created
      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 dann EmployeeTest aus , um das Ergebnis wie folgt anzuzeigen:

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 werden wir die grundlegenden Datentypen in Java diskutieren und wie sie bei der Entwicklung von Java-Anwendungen verwendet werden können.