วัตถุ Java และการเรียน
Java เป็นภาษาเชิงวัตถุ มันสนับสนุนแนวคิดพื้นฐานต่อไปนี้:
- polymorphism
- สืบทอด
- บรรจุภัณฑ์
- นามธรรม
- หมวดหมู่
- วัตถุ
- ตัวอย่าง
- ทาง
- ล้นมือ
ในส่วนนี้เรามุ่งเน้นไปที่แนวคิดของวัตถุและชั้นเรียน
- วัตถุ: วัตถุที่เป็นตัวอย่างของชั้นเรียน (วัตถุไม่ได้ที่จะหาแฟน) มีรัฐและพฤติกรรม ยกตัวอย่างเช่นสุนัขเป็นวัตถุที่มีรัฐเป็นสีชื่อสายพันธุ์พฤติกรรม: กระดิกหางของมันเรียกว่ากินและอื่น ๆ
- ประเภท: ชั้นเป็นแม่แบบที่อธิบายพฤติกรรมของชั้นเรียนของวัตถุและสถานะที่
เด็กชายและเด็กหญิงด้านล่างตัวเลขสำหรับชั้นเรียนและเฉพาะสำหรับแต่ละระดับของวัตถุเทียม:
วัตถุ Java
ตอนนี้ให้เราเข้าใจสิ่งที่เป็นวัตถุ มองไปรอบ ๆ โลกแห่งความจริงคุณจะพบรอบมากของวัตถุ, รถยนต์, สุนัข, คน, และอื่น ๆ ทั้งหมดของวัตถุเหล่านี้มีสถานะของตัวเองและพฤติกรรม
เพื่อที่จะใช้สุนัขเช่นนั้นกล่าวคือชื่อสายพันธุ์สีพฤติกรรมที่เรียกว่าแกว่งหางของมันและวิ่ง
เปรียบเทียบวัตถุจริงและวัตถุซอฟแวร์จะคล้ายกันมากระหว่างพวกเขา
ซอฟท์แววัตถุมีสถานะและพฤติกรรม วัตถุซอฟต์แวร์รัฐคือการแสดงที่มาของพฤติกรรมโดยวิธีการแสดงออก
ในการพัฒนาซอฟแวร์, โทรหากันเพื่อเปลี่ยนวิธีการในการดำเนินงานของรัฐภายในของวัตถุวัตถุที่สามารถทำได้โดยวิธีการ
เรียน Java
ชั้นสามารถมองเห็นเป็นแม่แบบในการสร้างวัตถุจาวา
โดยทำตามคำนิยามที่ระดับง่ายต่อการเข้าใจ Java ในชั้นเรียน:
public class Dog{ String breed; int age; String color; void barking(){ } void hungry(){ } void sleeping(){ } }
ชั้นสามารถมีต่อไปนี้ประเภทของตัวแปร:
- ตัวแปรท้องถิ่น: ตัวแปรในวิธีการคอนสตรัคหรือคำสั่งคำจำกัดความบล็อกเรียกว่าตัวแปรท้องถิ่น ตัวแปรที่มีการประกาศและเริ่มต้นได้ในวิธีการที่หลังจากการสิ้นสุดของวิธีการที่ตัวแปรจะถูกทำลายโดยอัตโนมัติ
- ตัวแปรสมาชิก: ตัวแปรสมาชิกชั้นเรียนจะมีการกำหนดตัวแปรภายนอกร่างกายวิธีการ ตัวแปรนี้จะถูกสร้างขึ้นเมื่อวัตถุถูก instantiated ตัวแปรสมาชิกสามารถเข้าถึงได้ในวิธีการบล็อกคำสั่งชั้นก่อสร้างและวิธีการของการเรียนโดยเฉพาะอย่างยิ่ง
- ตัวแปรระดับ: ตัวแปรระดับที่ประกาศในชั้นเรียนวิธีการอื่นนอกเหนือจากร่างกาย แต่ต้องได้รับการประกาศให้เป็นประเภทคงที่
ชั้นสามารถมีหลายวิธีในตัวอย่างข้างต้น: เห่า () หิว () และการนอนหลับ () เป็นระดับสุนัข
นวกรรมิก
แต่ละชั้นจะมีผู้สร้าง หากคุณไม่ได้กำหนดอย่างชัดเจนคอนสตรัคชั้น, Java คอมไพเลอร์จะช่วยให้การสร้างเริ่มต้นสำหรับชั้นเรียน
การสร้างวัตถุอย่างน้อยที่จะถูกเรียกตัวสร้าง ชื่อของผู้สร้างจะต้องเป็นชื่อเดียวกับชื่อชั้นระดับสามารถมีการก่อสร้างหลาย
นี่คือตัวอย่างของคอนสตรัคนี้:
public class Puppy{ public Puppy(){ } public Puppy(String name){ // 这个构造器仅有一个参数:name } }
สร้างวัตถุ
วัตถุที่ถูกสร้างขึ้นบนพื้นฐานของการเรียน ใน Java ใช้คำหลักใหม่ในการสร้างวัตถุใหม่ สร้างวัตถุต้องสามขั้นตอนต่อไปนี้:
- Disclaimer: ประกาศวัตถุรวมทั้งชื่อวัตถุและชนิดของวัตถุ
- ตัวอย่าง: คำหลักใหม่ในการสร้างวัตถุ
- เริ่มต้น: สร้างวัตถุใหม่ที่ใช้สร้างการเริ่มต้นเพื่อเริ่มต้นวัตถุจะถูกเรียกว่า
นี่คือตัวอย่างของการสร้างวัตถุ:
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" ); } }
รวบรวมและเรียกใช้โปรแกรมดังกล่าวข้างต้นจะพิมพ์ผลต่อไปนี้:
Passed Name is :tommy
ตัวแปรเช่นการเข้าถึงและวิธีการ
ในการเข้าถึงตัวแปรสมาชิกและวิธีการสมาชิกผ่านวัตถุได้ถูกสร้างขึ้นดังต่อไปนี้:
/* 实例化对象 */ ObjectReference = new Constructor(); /* 访问其中的变量 */ ObjectReference.variableName; /* 访问类中的方法 */ ObjectReference.MethodName();
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีการเข้าถึงตัวแปรเช่นและวิธีสมาชิกโทร:
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 ); } }
รวบรวมและเรียกใช้โปรแกรมดังกล่าวข้างต้นก่อให้เกิดผลลัพธ์ต่อไปนี้:
Passed Name is :tommy Puppy's age is :2 Variable Value :2
กฎการประกาศแฟ้มแหล่งที่มา
ในส่วนสุดท้ายของส่วนนี้เราจะได้เรียนรู้กฎระเบียบประกาศแฟ้มแหล่งที่มา เมื่อคุณกำหนดหลายชั้นเรียนในแฟ้มแหล่งหนึ่งและมีงบนำเข้าและงบแพคเกจให้ความสนใจเป็นพิเศษกับกฎเหล่านี้
- แฟ้มแหล่งที่สามารถมีได้เพียงหนึ่งชั้นเรียนของประชาชน
- แฟ้มแหล่งที่สามารถมีชั้นเรียนที่ไม่ใช่แบบสาธารณะหลาย
- ชื่อแฟ้มแหล่งที่มาและชื่อชั้นเรียนสาธารณะควรจะสอดคล้อง ตัวอย่างเช่นชื่อชั้นในแฟ้มแหล่งที่มาชั้นของประชาชนเป็นลูกจ้างแล้วแฟ้มแหล่งที่มาควรตั้งชื่อ Employee.java
- ถ้าระดับที่กำหนดไว้ในแพคเกจ, แพคเกจคำสั่งจะต้องเป็นบรรทัดแรกของแฟ้มแหล่งที่มา
- ถ้าแฟ้มแหล่งที่มาที่มีคำสั่งนำเข้าคำสั่งควรอยู่ระหว่างแพคเกจและนิยามคลาส ถ้าไม่มีคำสั่งแพคเกจงบนำเข้าควรจะเป็นสิ่งสำคัญที่สุดในแฟ้มแหล่งที่มา
- งบแพคเกจนำเข้าและงบของทุกชั้นที่กำหนดไว้ในแฟ้มแหล่งที่มาที่ถูกต้อง ในแฟ้มแหล่งที่มาเดียวกันไม่ให้เรียนแตกต่างกันของคำสั่งแพคเกจต่างๆ
มีหลายระดับของการเรียนการเข้าถึงมีและชั้นเรียนสามารถแบ่งออกเป็นประเภทที่แตกต่างกัน: คลาสนามธรรมและการเรียนสุดท้ายและไม่ชอบ เหล่านี้จะอธิบายไว้ในส่วนการควบคุมการเข้าถึง
นอกจากนี้ในประเภทดังกล่าวข้างต้น, Java มีบางประเภทพิเศษเช่น: เรียนชั้นเรียนที่ไม่ระบุชื่อ
แพคเกจ Java
แพคเกจส่วนใหญ่จะใช้ในการจัดกลุ่มการเรียนและการเชื่อมต่อ เมื่อคุณพัฒนาโปรแกรม Java สามารถเขียนหลายร้อยของการเรียนดังนั้นจึงมีความจำเป็นที่จะจัดชั้นเรียนและการเชื่อมต่อ
งบนำเข้า
ใน Java หากได้รับชื่อที่มีคุณสมบัติครบถ้วนรวมทั้งชื่อแพคเกจที่ชื่อชั้นแล้วคอมไพเลอร์ Java สามารถค้นหารหัสแหล่งที่มาหรือหมวดหมู่ คำสั่งนำเข้าจะใช้เพื่อให้เส้นทางที่เหมาะสมเพื่อให้คอมไพเลอร์สามารถหาชั้นเรียน
ยกตัวอย่างเช่นคำสั่งบรรทัดคำสั่งดังต่อไปนี้คอมไพเลอร์จะโหลดทุกชั้นเรียน java_installation / java / เส้นทาง IO ของ
import java.io.*;
ตัวอย่างง่ายๆ
ในตัวอย่างนี้เราจะสร้างสองชั้นเรียน: พนักงานและ EmployeeTest
ก่อนเปิดโปรแกรมแก้ไขข้อความไปวางรหัสต่อไปนี้เป็นมัน หมายเหตุบันทึกแฟ้มเป็น Employee.java
ระดับพนักงานมีตัวแปรสี่สมาชิก: ชื่ออายุและการกำหนดเงินเดือน ระดับประกาศแน่ชัดว่าวิธีการคอนสตรัคซึ่งเป็นเพียงหนึ่งพารามิเตอร์
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); } }
การทำงานของโปรแกรมจะเริ่มจากวิธีการหลัก เพื่อเรียกใช้โปรแกรมและจะต้องมีวิธีการหลักสร้างอินสแตนซ์ของวัตถุ
นี่เป็นระดับชั้น EmployeeTest, ยกตัวอย่างสองกรณีของระดับพนักงานและเรียกวิธีการในการตั้งค่าของตัวแปร
รหัสต่อไปนี้จะถูกเก็บไว้ในแฟ้ม 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(); } }
รวบรวมไฟล์ทั้งสองและเรียกระดับ EmployeeTest คุณสามารถเห็นผลดังต่อไปนี้:
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