Objek dan kelas Java


Jawa sebagai bahasa berorientasikan objek. Menyokong konsep asas berikut:

  • Polimorfik

  • Warisi

  • Pakej

  • Abstrak

  • Kelas

  • Objek

  • Contoh

  • Kaedah

  • Berlebihan

Dalam bahagian ini kita menumpukan pada konsep objek dan kelas.

  • Objek: Objek ialah tika kelas (Objek bukan Cari Teman Perempuan), mempunyai keadaan dan tingkah laku. Sebagai contoh, anjing ialah objek Statusnya termasuk: warna, nama, dan kelakuannya termasuk: mengibaskan ekornya, menyalak, makan, dsb.

  • Kelas : Kelas ialah templat yang menerangkan kelakuan dan status kelas objek.

Dalam gambar di bawah, lelaki dan perempuan adalah kelas, dan setiap orang tertentu ialah objek kelas:

object-class.jpg


Objek dalam Java


Sekarang mari kita fahami secara mendalam apa itu objek. Jika anda melihat dunia sebenar di sekeliling anda, anda akan mendapati bahawa terdapat banyak objek di sekeliling anda, seperti kereta, anjing, orang, dll. Semua objek ini mempunyai keadaan dan tingkah laku mereka sendiri.

Ambil anjing sebagai contoh Statusnya termasuk: nama, baka dan warnanya termasuk: menyalak, mengibaskan ekor dan berlari.

Bandingkan objek sebenar dan objek perisian, ia sangat serupa.

Objek perisian juga mempunyai keadaan dan tingkah laku. Keadaan objek perisian ialah atributnya, dan tingkah lakunya dicerminkan melalui kaedah.

Dalam pembangunan perisian, kaedah beroperasi pada perubahan dalam keadaan dalaman objek, dan panggilan bersama antara objek juga diselesaikan melalui kaedah.

Kelas dalam Java

Kelas boleh dilihat sebagai templat untuk mencipta objek Java.

Fahami takrif kelas dalam Java melalui kelas mudah berikut:

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

Sebuah kelas boleh mengandungi pembolehubah jenis berikut:

  • Pembolehubah setempat: Pembolehubah yang ditakrifkan dalam kaedah, pembina atau blok pernyataan dipanggil pembolehubah tempatan. Pengisytiharan pembolehubah dan permulaan semuanya dalam kaedah Selepas kaedah tamat, pembolehubah akan dimusnahkan secara automatik.

  • Pembolehubah ahli : Pembolehubah ahli ialah pembolehubah yang ditakrifkan dalam kelas dan di luar badan kaedah. Pembolehubah sebegini dijadikan instantiated apabila objek dicipta. Pembolehubah ahli boleh diakses oleh kaedah, pembina, dan blok pernyataan kelas tertentu.

  • Pembolehubah kelas : Pembolehubah kelas juga diisytiharkan dalam kelas, di luar badan kaedah, tetapi mesti diisytiharkan sebagai jenis statik.

Sebuah kelas boleh mempunyai berbilang kaedah Dalam contoh di atas: menyalak(), lapar() dan tidur() adalah semua kaedah kelas Anjing.


Kaedah pembina

Setiap kelas mempunyai kaedah pembina. Jika tiada pembina ditakrifkan secara eksplisit untuk kelas, pengkompil Java akan menyediakan pembina lalai untuk kelas.

Apabila mencipta objek, sekurang-kurangnya satu pembina mesti dipanggil. Nama pembina mestilah sama dengan kelas A boleh mempunyai berbilang pembina.

Berikut ialah contoh kaedah pembina:

public class Puppy{
   public Puppy(){
   }

   public Puppy(String name){
      // 这个构造器仅有一个参数:name
   }
}

Mencipta objek

Objek dicipta daripada kelas. Di Java, gunakan kata kunci baharu untuk mencipta objek baharu. Mencipta objek memerlukan tiga langkah berikut:

  • Pengisytiharan: Isytihar objek, termasuk nama objek dan jenis objek.

  • Instantiation: Gunakan kata kunci baharu untuk mencipta objek.

  • Inisialisasi: Apabila menggunakan baharu untuk mencipta objek, kaedah pembina dipanggil untuk memulakan objek.

Berikut ialah contoh mencipta objek:

public class Puppy{
   public Puppy(String name){
      //这个构造器仅有一个参数:name
      System.out.println("Passed Name is :" + name ); 
   }
   public static void main(String []args){
      // 下面的语句将创建一个Puppy对象
      Puppy myPuppy = new Puppy( "tommy" );
   }
}

Kompil dan jalankan atur cara di atas, keputusan berikut akan dicetak:

Passed Name is :tommy

Akses pembolehubah dan kaedah instance

Akses pembolehubah ahli dan kaedah ahli melalui objek yang dicipta, seperti ditunjukkan di bawah:

/* 实例化对象 */
ObjectReference = new Constructor();
/* 访问其中的变量 */
ObjectReference.variableName;
/* 访问类中的方法 */
ObjectReference.MethodName();

Instance

Contoh berikut menunjukkan Cara untuk mengakses pembolehubah contoh dan memanggil kaedah ahli:

public class Puppy{
   int puppyAge;
   public Puppy(String name){
      // 这个构造器仅有一个参数:name
      System.out.println("Passed Name 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){
      /* 创建对象 */
      Puppy myPuppy = new Puppy( "tommy" );
      /* 通过方法来设定age */
      myPuppy.setAge( 2 );
      /* 调用另一个方法获取age */
      myPuppy.getAge( );
      /*你也可以像下面这样访问成员变量 */
      System.out.println("Variable Value :" + myPuppy.puppyAge ); 
   }
}

Susun dan jalankan program di atas, menghasilkan keputusan berikut:

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

Peraturan pengisytiharan fail sumber

adalah dalam bahagian ini Pada bahagian akhir, kita akan melihat peraturan pengisytiharan untuk fail sumber. Beri perhatian khusus kepada peraturan ini apabila mentakrifkan berbilang kelas dalam fail sumber dan apabila terdapat penyata import dan penyata pakej.

  • Hanya boleh ada satu kelas awam

  • dalam fail sumber Fail sumber boleh mempunyai berbilang kelas bukan awam

  • Nama fail sumber hendaklah konsisten dengan nama kelas kelas awam. Sebagai contoh: nama kelas kelas awam dalam fail sumber ialah Pekerja, maka fail sumber hendaklah dinamakan Employee.java.

  • Jika kelas ditakrifkan dalam pakej, penyataan pakej harus berada pada baris pertama fail sumber.

  • Jika fail sumber mengandungi pernyataan import, ia harus diletakkan di antara pernyataan pakej dan definisi kelas. Jika tiada penyata pakej, penyata import hendaklah yang pertama dalam fail sumber.

  • Pernyataan import dan pernyataan pakej adalah sah untuk semua kelas yang ditakrifkan dalam fail sumber. Dalam fail sumber yang sama, pengisytiharan pakej yang berbeza tidak boleh diberikan kepada kelas yang berbeza.

Kelas mempunyai beberapa tahap akses dan kelas juga dibahagikan kepada jenis yang berbeza: kelas abstrak, kelas akhir, dsb. Ini akan diperkenalkan dalam bab kawalan akses.

Selain jenis yang dinyatakan di atas, Java juga mempunyai beberapa kelas khas, seperti kelas dalam dan kelas tanpa nama. Pakej


Pakej Java

digunakan terutamanya untuk mengelaskan kelas dan antara muka. Apabila membangunkan program Java, anda boleh menulis ratusan atau beribu-ribu kelas, jadi adalah perlu untuk mengklasifikasikan kelas dan antara muka.

Import pernyataan

Di Java, jika nama lengkap yang layak diberikan, termasuk nama pakej dan nama kelas, pengkompil Java boleh mencari kod sumber atau kelas dengan mudah. Pernyataan Import digunakan untuk menyediakan laluan yang munasabah supaya pengkompil boleh mencari kelas tertentu.

Sebagai contoh, baris arahan berikut akan mengarahkan pengkompil untuk memuatkan semua kelas dalam laluan java_installation/java/io

import java.io.*;

Contoh mudah

Dalam ini Dalam contoh, kami mencipta dua kelas: Employee and EmployeeTest.

Mula-mula buka editor teks dan tampal kod berikut ke dalamnya. Ambil perhatian bahawa fail itu disimpan sebagai Employee.java.

Kelas Pekerja mempunyai empat pembolehubah ahli: nama, umur, jawatan dan gaji. Kelas secara eksplisit mengisytiharkan kaedah pembina dengan hanya satu parameter.

import java.io.*;
public class Employee{
   String name;
   int age;
   String designation;
   double salary;
   // Employee 类的构造器
   public Employee(String name){
      this.name = name;
   }
   // 设置age的值
   public void empAge(int empAge){
      age =  empAge;
   }
   /* 设置designation的值*/
   public void empDesignation(String empDesig){
      designation = empDesig;
   }
   /* 设置salary的值*/
   public void empSalary(double empSalary){
      salary = empSalary;
   }
   /* 打印信息 */
   public void printEmployee(){
      System.out.println("Name:"+ name );
      System.out.println("Age:" + age );
      System.out.println("Designation:" + designation );
      System.out.println("Salary:" + salary);
   }
}

Atur cara memulakan pelaksanaan daripada kaedah utama. Untuk menjalankan program ini, kaedah utama mesti disertakan dan objek contoh mesti dibuat.

Kelas EmployeeTest diberikan di bawah, yang menunjukkan dua kejadian kelas Pekerja dan memanggil kaedah untuk menetapkan nilai pembolehubah.

Simpan kod berikut dalam fail EmployeeTest.java.

import java.io.*;
public class EmployeeTest{

   public static void main(String args[]){
      /* 使用构造器创建两个对象 */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      // 调用这两个对象的成员方法
      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();
   }
}

Kompilasikan kedua-dua fail ini dan jalankan kelas EmployeeTest Anda boleh melihat keputusan berikut:

C :> javac Employee.java
C :> vi EmployeeTest.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