การออกแบบคลาส(Class Design) ในภาษาjava

Constructor
เป็นเมธอดที่มีชื่อเดียวกับชื่อคลาส  จะถูกเรียกใช้งานเมื่อมีการสร้างออปเจ็คโดยใช้คำสั่ง new
รูปแบบ
                                [modifier] ClassName([arguments]) {
                                [statements]
                                }
constructor จะเป็นเมธอดที่ไม่ต้องระบุชนิดข้อมูลของค่าที่ส่งกลับและไม่ต้องใช้คีย์เวิร์ด void
Constructor แบบ default
โดยทั่วไปคลาสทุกคลาสจะมี constructor แบบ default
รูปแบบ
                                public ClassName() {
                                }
constructor แบบ default  จะเป็น  constructor  ที่ไม่มีคำสั่งใดๆอยู่ภายใน
คอมไพเลอร์ของภาษาจาวาจะใส่ constructor แบบ default ให้กับโปรแกรมโดยอัตโนมัติ
ตัวอย่าง constructor แบบ default ของคลาส Student
                                public Student() {
                                }
การเขียน constructor
เราสามารถที่จะเขียน constructor ของคลาสใดๆก็ได้
ตัวอย่างการเขียน constructor ของคลาส Student
                                public Student(String ID,String n,double GPA) {
                                                id = ID;
                                                name = n;
                                                gpa = GPA;
                                }
constructor แบบ default  จะหายไปเมื่อมีการเขียน constructor ขึ้นใหม่
ขั้นตอนการทำงานของคำสั่ง new
-กำหนดเนื้อที่ในหน่วยความจำให้กับออปเจ็ค
-กำหนดค่าเริ่มต้นให้กับคุณลักษณะของออปเจ็ค
-กำหนดค่าของคุณลักษณะของออปเจ็คตามคำสั่งกำหนดค่าที่ประกาศไว้
-เรียกใช้ constructor
ตัวอย่างคลาส  MyDate
public class MyDate {
                                private int day = 1;
                                private int month = 1;
                                private int year = 2000;
                                public MyDate(int d,int m,int y) {
                                                day = d;
                                                month = m;
                                                year = y;
                                }
 }
รูปแสดงขั้นตอนการทำงานของคำสั่ง new
คำสั่ง  MyDate d1 = new MyDate(16,8,1972);
รูปแสดงขั้นตอนการทำงานของคำสั่ง new
คีย์เวิร์ด this
คีย์เวิร์ด this หมายถึงออปเจ็คของตัวเอง
คีย์เวิร์ด this ใช้อ้างอิงคุณลักษณะและเมธอดของออปเจ็คภายในเมธอด ซึ่งมีรูปแบบดังนี้
                        this.attirbuteName;
                        this.methodName();
ตัวอย่างโปรแกรม
 public class Student {
  private String id;
  private String name;
  private double gpa;
  public Student(String id,String name, double gpa) {
  this.id = id;
  this.name = name;
  this.gpa = gpa;
     }
     public void showDetails() {
    System.out.println("ID: "+id);
  System.out.println("Name: "+name);
  System.out.println("GPA: "+gpa);
     }
 }
คุณลักษณะเด่นของโปรแกรมเชิงออปเจ็ค
การห่อหุ้ม (Encapsulation)
คุณลักษณะของออปเจ็คจะถูกป้องกันไว้ไม่ให้ออปเจ็คอื่นที่อยู่ภายนอกเข้าถึงข้อมูลได้อย่างอิสระ ออปเจ็คอื่นๆสามารถจะเรียกใช้คุณลักษณะของออปเจ็คได้โดยเรียกผ่านเมธอด
ข้อดีของการห่อหุ้ม 
-การซ่อนเร้นข้อมูล (Information Hiding) ออปเจ็คสามารถติดต่อกับออปเจ็คภายนอกผ่านเมธอดที่เป็น public interface ดังนั้นเราสามารถที่จะเปลี่ยนตัวแปร หรือเมธอดอื่นๆของออปเจ็คโดยไม่มีผลกระทบใดๆ
-ความเป็นโมดูล (Modularity) การพัฒนาโปรแกรมของแต่ละออปเจ็คเป็นอิสระต่อกัน ถ้ามีการเปลี่ยนแปลงเกิดขึ้นภายในออปเจ็คหนึ่งก็จะไม่มีผลกระทบต่อออปเจ็คอื่นๆ
การสืบทอด (Inheritance)
คลาสๆหนึ่งสามารถสืบทอดคุณลักษณะและเมธอดของคลาสอื่นได้โดยใช้คีย์เวิร์ด extends
รูปแบบ
                      public class SubClass extends SuperClass {
                                                     ...
                   }
ตัวอย่าง
                public class GradStudent extends Student { }
public class PhDStudent extends GradStudent { }
                public class FullTimeStudent extends Student { }
                public class PartTimeStudent extends Student { }
รูปแสดงตัวอย่างการสืบทอด
รูปแสดงตัวอย่างการสืบทอด ภาษาjava