JAVAPROGRAMING


JAVAPROGRAMING


CHAPTER-I
INTRODUCTION


  1. What is Java?
    1. Java is computer high level programming language
    2. Java is object oriented programming language
    3. Java is relate to C++
    4. Java is platform independent
    5. The reason that make up Java because of using C++ is very complicated
  1. History
    1. Java was conceived by James Gosling, Patrick Naughton, Chris Warth, Ed Frank, and Mike Sheridan at Sun Microsystems, Inc. in 1991. It took 18 month to develop the first working version. This language was initially called “Oak” but was rename “Java” in 1995.
    2. Between the initial implementation of Oak in the fall of 1992 and the public announcement of Java in the spring of 1995, many more people contributed to the design and evolution of the language.
  1. Versioning
    1. Java v.1.0
    2. Java v.1.1
    3. Java v.1.2
    4. Java v.1.3
    5. Java v.1.4
    6. Java v.1.5
    7. Java v.1.6
Year 2,
Semester 2,
08th January, 2011,
Java Programming,
Taught by: teacher MAM Pahnavuth,


Java Programming


ទិដ្ឋភាពទូទៅស្តីអំពី Java
Q:        តើរៀន Java ដើម្បីអ្វី?
A:        រៀន Java ដើម្បីបង្កើតកម្មវិធី (Program)(www.sun.com)
Q:        ចុះរៀន C++ ដើម្បីអ្វី?
A:        រៀន C++ ដើម្បីបាន Concepts ជាមូលដ្ឋានក្នុងការបង្កើតកម្មវិធី។

របៀបតំឡើង Java
  1. ត្រូវ Install JDK (Java Development Kit) មុនព្រោះវាជា Compiler សំរាប់ Java
  2. បន្ទាប់មកត្រូវ Install NetBeans ព្រោះវាជា File សំរាប់សរសេរ Code File NetBeans មាន ច្រើន Versions ដូចជា៖
*      JDK and NetBeans 6.8 សំរាប់ Version 6.8 នេះមានតែមួយ File ទេគឺ Programmer Java បានសរសេរ File JDK និង NetBeans បញ្ចូលគ្នាមកតែមួយ File
*      JDK and NetBeans 6.9 សំរាប់ Version 6.9 នេះមាន 2 Files ដាច់ពីគ្នា ចំពោះការតំឡើង វិញគឺត្រូវតំឡើង File JDK មុន បន្ទាប់មកទើបត្រូវតំឡើង File NetBeans 6.9 ជាក្រោយ (www.netbeans.org) Download last version free  












Chapter 1

Datatype and Variable

1.      Datatype
*      Datatype ក្នុងភាសា C++ មាន៧គឺ៖ char, short, int, long, float, double, long double
*      Datatype ក្នុងភាសា Java មាន៤ក្រុមគឺ៖
-          Integer number : ជា Datatype អាចផ្ទុកលេខគត់ធម្មជាតិរួមមាន៖ byte, short, int, long
-          Floating-point number : ជា Datatype អាចផ្ទុកលេខទសភាគរួមមាន៖ float, double
-          Character : ជា Datatype អាចផ្ទុកតួរអក្សរ ឬតួរលេខរួមមាន៖ char
-          Boolean : ជា Datatype អាចផ្ទុកពីរពាក្យ គឺ true false រួមមាន៖ boolean

1.1.       Integer number
Datatype                     Size                             Range
byte                             1 byte                          - 128 to 127
short                            2 bytes                         - 215 to 215 -1
int                                4 bytes                         - 231 to 231 -1
long                             8 bytes                         - 263 to 263 -1
1.2.       Floating-point number
Datatype                     Size                             Range
                        float                             4 bytes                         3.4e-38 to 3.4e+38
                        double                         8 bytes                         1.7e-308 to 1.7e+308

Q: តើ 3.4e+38 មានន័យដូចម្តេច?
A: 3.4e+38 មានន័យថា 3.4 x 1038

1.3.       Character
Datatype                     Size                             Range
                        char                             2 bytes                         0 to 65, 536 តំណាងឲ្យចំនួនតួរអក្សរ
*      Java អាច Support បានគ្រប់ Fonts ទាំងអក្សរខ្មែរ, ចិន, ...

1.4.       Boolean
Datatype                     Size                             Range
                        boolean                        1 byte                          true or false

            ឧទាហរណ៍៖
boolean   b;      ជា Keyword មិនមែនជា​ Variable ទេ
b = true;
System.out.print(“b = ”+b);
// b = true
Output លើ Console

          ឧទាហរណ៍៖
                        boolean  b;
                        b=false;
                        if(b)
                                    System.out.println(“It is OK”);
                        else
                                    Sytem.out.println(“Not OK”);
            ឧទាហរណ៍៖
                   int a=10;
                   int b=20;
                   boolean  x;
                   x=a>b;
                   if(x)
                             System.out.println(“Max is A”);
                   else
                             Sytem.out.println(“Max is B”);

*      String: នៅក្នុងភាសា Java យើងអាចបង្កើត Variable ជា String  ដោយប្រើ Class មួយ ឈ្មោះថា String

ឧទាហរណ៍ទី១៖
String stName;
stName = “Sok Rotha”;
System.out.print(“Hi!, ”+stName);

ឧទាហរណ៍ទី២៖
String st1 = “Java”;
String st2 = “Programming”;
String st = st1 + “  ” +st2;
System.out.print(“st = ” +st);
// st = Java Programming

ឧទាហរណ៍ទី៣៖
                             ជា String ព្រោះនៅក្នុងសញ្ញាធ្មេញកណ្តុរ
String a = “1”;
String b = “2”;
String sum = a + b;                  ជាការតភ្ជាប់គ្នា មិនមែនជាការបូកតំលៃលេខបញ្ចូលគ្នាទេ
System.out.print(“Sum = ”+sum);
// Sum = 12
ឧទាហរណ៍ទី
int  a = 1;
String b = “2”;
String sum = a + b;
System.out.print(“Sum = ”+sum);
// Sum = 12
ឧទាហរណ៍ទី
int  a = 1;
int  b = 2;
String sum =””+ (a + b);
System.out.print(“Sum = ”+sum);
// Sum = 3


2.      Variables
គឺជាអញ្ញាត ឬអថេរប្រើសំរាប់ផ្ទុកទិន្នន័យបណ្តោះអាសន្ន។
នៅក្នុងភាសា Java ដើម្បីបង្កើត VariableName មួយ វាគឺត្រូវបានផ្សំឡើងដោយ៖
-        តួអក្សរពី a → z ឬ​ A → Z
-        ឬក៏អាចផ្សំជាមួយតួអក្សរពី 0 → 9
-        ហើយអាចប្រើនិមិត្តសញ្ញាបានតែមួយប្រភេទគឺ Underscore ( _ )


ឧទាហរណ៍៖
int age;
long ID;
float price;
char ch1;
double total_price;

*      Initialization of variable ជាការកំណត់តំលៃដំបូងទៅឲ្យ Variable ណាមួយ។
ឧទាហរណ៍៖
int age=18; → Initialization
int age; → Declaration
age=18; → Assignment (ដូច C++ 100%) លើកលែងតែ float

*      double x = 2.5;
      x = 2.5;
*      float y = 2.5f;
  y = 2.5f;
*      float<double
  4 bytes<8 bytes


The End!






Chapter 2

Control Statement

1.      Overview
នៅក្នុងភាសា Java យើងបែងចែក Control Statement ជា 3 ក្រុម៖
-          Selection Statements ៖ ជា Statement ប្រើសំរាប់ជ្រើសរើស Statement មួយ ឬច្រើន ដើម្បី execute រួមមាន៖ if-else, switch
-          Loop Statements ជា Statement ប្រើសំរាប់ execute សារទៅសារមករហូតជួបលក្ខ ខណ្ឌមិនពិត រួមមាន៖ while, do while និង for
-          Jumping Statements ជា Statement ប្រើសំរាប់ execute រំលងទៅ Statement ផ្សេង ទៀត ដោយគ្មានលក្ខខណ្ឌ រួមមាន៖ break , continue និង return

2.      Selection Statement
2.1.   if-else
ជា statement មួយ មានតួនាទីដាក់លក្ខខណ្ឌឲ្យ statement ផ្សេងទៀត ប្រសិនបើ លក្ខ ខណ្ឌរបស់ if ពិត statements ទាំងអស់របស់ if ត្រូវបាន execute តែបើមិនពិត statements ទាំងអស់របស់ else ត្រូវបាន execute
ទំរង់ = Form :
if(condition){
            statement(s);
}else{
            Statement(s);
}


ឧទាហរណ៍៖
int a = 0;
if(a>0)
System.out.print(“A is positive.”);
                        else if(a<0)
System.out.print(“A is negative.”);
else
System.out.print(“A is zero.”);

Homework:
ចូរសរសេរ Program មួយ ដើម្បីគណនារកប្រាក់ខែរបស់កម្មករក្នុងរោងចក្រមួយ។
-        កម្មករត្រូវធ្វើការឲ្យបាន 100 ម៉ោង/ខែ នឹងទទួលប្រាក់ខែបាន 50 ដុល្លារ
-        ក្នុងករណីដែលកម្មករបានធ្វើការច្រើនម៉ោងលើសការកំណត់ ចាប់ពី 1 ម៉ោងដល់ 20 ម៉ោង នោះទទួលប្រាក់បន្ថែមបាន 1.25 ដុល្លារ/ម៉ោង
-        ក្នុងករណីដែលកម្មករបានធ្វើការច្រើនម៉ោងលើសការកំណត់ លើសពី 20 ម៉ោងឡើង ទៅ នោះទទួលប្រាក់បន្ថែមបាន 1.5 ដុល្លារ/ម៉ោង
-        ក្នុងករណីដែលកម្មករបានធ្វើការតិចជាងម៉ោងដែលបានកំណត់ នោះនឹងកាត់ប្រាក់ខែ 0.5 ដុល្លារ/ម៉ោង។
ចូរបង្ហាញរបាយការណ៍កម្មករ។
Enter Total Time       =          118
-        Extra time1                 =          18
-        Extra time2                 =          0
-        Bonus rate1                 =          $ 1.25/h
-        Bonus rate2                 =          $ 1.5/h
-        Bonus Salary               =(Extra time1 * Bonus rate1)+ (Extra time2 * Bonus rate2)
-        Basic Salary                =          $50
-        ….……………………..…………
-        Total Salary                 =          Basic Salary + Bonus Salary


Enter Total Time       =          80
-        Basic Salary                =          $50
-        Lost rate                      =          $0.5
-        Lost Salary                  =(100- Total Time)*Lost rate
-        …………………………………………………………..
-        Total Salary                 =Basic Salary – Lost Salary


2.2.   switch
Switch statement ជា statement មួយប្រើសំរាប់ជ្រើសរើស Statement ផ្សេងៗទៀត ដើម្បី Execute ហើយ Execute ចាប់ពីករណីពិតចុះមកក្រោម
          Form: ទំរង់
            switch (expression){
            case value1:
                        statement(s);
            case value2:
                        statement(s);
            case value3:
                        statement(s);
            default:
                        statement(s);
}

ឧទាហរណ៍ទី១៖
char ch = ‘R’;
switch(ch){
case ‘R’:
            System.out.print(“Red”); break;
case ‘G’:
            System.out.print(“Green”); break;
case ‘B’:
            System.out.print(“Blue”); break;
default:
            System.out.print(“Unknown color”);
}




3.      Loop Statement
ប្រើសំរាប់ execute statements មួយ ឬច្រើន សារទៅសារមករហូតទាល់
តែជួបលក្ខខណ្ឌមិនពិត។
3.1.   while
ជា Loop ដែលចាំបាច់ត្រូវផ្ទៀងផ្ទាត់ជាមុនសិន ទើប execute statement របស់វា។
Form :
while(condition){
          statement(s);
}
ឧទាហរណ៍ទី១៖
int i = 1;
while(i<=5){
System.out.print(i + “ , ”);
i++;
}

// 1, 2, 3, 4, 5,

ឧទាហរណ៍ទី២៖
int i = 5;
while(i>=1){
System.out.print(i + “ , ”);
i--  ;
}
// 5, 4, 3, 2, 1,

3.2.   do while
ជា Loop ចាំបាច់ execute statements ជាមុន ទើបផ្ទៀងលក្ខខណ្ឌ ជាក្រោយ។

Form:
            do{
statements;
                                    }while(condition);

ឧទាហរណ៍ទី១៖
int i = 1;
do{
            System.out.print(i + “ , ”);
            i++;
}while(i<=5);
//1,2,3,4,5.
ឧទាហរណ៍ទី២៖
int i = 5;
do{
            System.out.print(i + “ , ”);
            i--;
}while(i>=1);

                        //5,4,3,2,1

3.3.   for ជា Loop មួយដែលមានលក្ខណៈពិសេសជាង Loop ដទៃ ព្រោះនៅក្នុង Expression របស់វាមាន 3 statements ដោយ statements ទាំង 3 នេះមានតួនាទីដូចជា៖
-       Initialization: ជា Statement មួយប្រើសំរាប់កំណត់តម្លៃចាប់ផ្តើមរបស់ Loop ហើយ statement នេះ execute តែម្តងគត់សំរាប់មួយជីវិតនៃ Loop
-       Condition: ជា Statement មួយប្រើសំរាប់ដាក់លក្ខខណ្ឌឲ្យ Loop
-       Step: ជា Statement ប្រើសំរាប់កំណត់ជំហានរបស់ Loop
Form:
                for(initialization; condition; step){
                            statements;
                }

ឧទាហរណ៍ទី១៖
for(int i=1; i<=5; i++)
            System.out.print(i +“ , ”);
// 1, 2, 3, 4, 5,

ឧទាហរណ៍ទី២៖                        
for(int i=5; i>=1; i--)
            System.out.print(i + “ , ”);
// 5, 4, 3, 2, 1,

4.      Jumping statement ជា statement មួយប្រើសំរាប់ execute រំលងទៅកាន់ statement ផ្សេង មួយទៀតដោយគ្មានលក្ខខណ្ឌ។
4.1.   Break statement ជា statement មួយប្រើសំរាប់ចាកចេញពី switch ឬពី Loop
ឧទារហរណ៍៖
         for(int i=1; i<=1000; i + +){
                       System.out.print(i +“ , ”);
                        if(i = = 5)
                                    break;
}
// output: 1, 2, 3, 4, 5,
4.2.   Continue statement ៖ ជា statement មួយប្រើសំរាប់ចាកចេញពីរំលង1ជុំ នៃ Loop
ឧទារហរណ៍៖
for(int i=1; i<=1000; i + +){
            if(i = = 5)
continue;
System.out.print(i +“ , ”);
}
// output: 1, 2, 3, 4, 6,7……,1000,
      4.3.​​​Return statement  ៖ ជា statement មួយប្រើចាកចេញពី Sub-Program (Method)


The End!

Code receive data from Keyboard:
import java.util.Scanner;
public class Maximum{
      public static void main(String arg[ ]){
                  Scanner cin=new Scanner(System.cin);
float a, b;
System.out.print(“A = ”);
                                    a=cin.nextFloat();
System.out.print(“B = ”);
b=cin.nextFloat();
if(a>b)
            System.out.print(“Maximum is ”+a);
Else
            System.out.print(“Maximum is ”+b);
}
}























Chapter 3

Array


Q.        What is array?
A.        Array គឺជាបណ្តុំ Variables ដែលមានឈ្មោះដូចគ្នា និង Datatype ដូចគ្នា ហើយពួកវាខុស គ្នាដោយ Index

1.      One dimensional array
One dimensional array គឺសំដៅលើ Array មួយវិមាត្រ។
          Datatype         arrayName[ ] = new    Datatype[elements];

ឧទាហរណ៍៖                    
                    int    a[ ] = new    int[5];
a[0]
a[1]
a[2]
a[3]
a[4]

ចំណាំ៖
          ក្នុងភាសា Java យើងអាចបង្កើត array n ធាតុបាន ដោយសារតែចំនួន elements របស់វា យើងអាចប្រើ Variable ជំនួសបាន។
ឧទាហរណ៍៖
          int n;
n=cin.nextInt();
int a[]=new int[n];

*      import java.util.Scanner;
public class InputArrayN{
public static void main(String arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter n = ”);
n=cin.nextInt();
int a[]=new int[n];
System.out.println(“Now, you can enter ”+n+“ values”);
for(int i=0; i<n; i++){
System.out.print(“Enter a[“+i+”] = ”);
a[i] = cin.nextInt();
}
System.out.println(“Now, you can display ”+n+“ values”);
for(int i=0; i<n; i++)
            System.out.println(“a[“+i+”] = ”+a[i]);
}
}


*      import java.util.Scanner;
public class Max{
public static void main(String []arg){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter number of elements = ”);
n=cin.nextInt();
int a[]=new int[n];
System.out.println(“Now, you can enter ”+n+“ values”);
for(int i=0; i<n; i++){
System.out.println(“Enter a[“+i+”] = ”);
a[i]=cin.nextInt();
}
int max;
max=a[0];
for(int i=1; i<n; i++)
if(max<a[i])
            max=a[i];
System.out.println(“Maximum is ”+max);
}
}


*      import java.util.Scanner;
public class Main{
public static void main(String arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter number of elements = ”);
N=cin.nextInt();
int a[]=new int[n];
System.out.println(“Now, you can enter ”+n+ “ values”);
for(int i=0; i<n; i++){
System.out.print(“Enter a[“+i+”] = ”);
a[i]=cin.nextInt();
}
for(int i=0; i<n-1; i++)
for(int j=1+i; j<n; j++)
if(a[i]>a[j]){
int temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
for(int i=0; i<n; i++)
System.out.println(“[“+i+”] = ”+a[i]);
}
}




*      import java.util.Scanner;
public class Main{
public static void main(String arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter number of elements = ”);
n=cin.nextInt();
int a[]=new int[n];
System.out.println(“Now, you can enter ”+n+ “values”);
for(int i=0; i<n; i++){
System.out.println(“Enter a[“+i+”] = ”);
a[i]=cin.nextInt();
}
int Search;
System.out.print(“Enter number you need to Search = ”);
Search=cin.nextInt();
System.out.print(“Index”);
boolean b=false;
for(int i=0; i<n; i++)
if(a[i]==Search){
b=true;
System.out.print(i+“,”);
}
if(b==true)
System.out.print(“Found in array.”);
else
System.out.print(“Not found in array.”);
}
}

*      import java.util.Scanner;
public class Main{
public static void main(String arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter number of elements = ”);
                                    n=cin.nextInt();
int a[]=new int[n];
System.out.println(“Now, you can enter ”+n+ “ values.”);
for(int i=0; i<n; i++){
if(i==0){
System.out.print(“Enter a[“+i+”] = ”);
a[i]=cin.nextInt();
}else{
System.out.print(“Enter a[“+i+”] = ”);
boolean b=false;
int value;
value=cin.nextInt();
for(int j=0; j<i; j++)
if(a[j]==value){
System.out.println(“Number already exist.”);
b=true;
break;
}
if(b==false)
a[i]=value;
                                                                        else      i--;
}
}
System.out.println(“Now, you can display ”+n+ “ values”);
for(int i=0; i<n; i++)
            System.out.println(“a[“+i+”]= ”+a[i]);
}
}

*Add new Elements to Array

import java.util.Scanner;
public class AddNewElements {
    public static void main(String arg[]){
        Scanner cin=new Scanner(System.in);
        int n;
        System.out.print("Enter n=");
        n=cin.nextInt();
        int a[]=new int[n];
        for(int i=0;i<n;i++){
            System.out.print("Enter a["+i+"]=");
            a[i]=cin.nextInt();
        }
        int newElement;
        System.out.print("Enter new Elements=");
        newElement=cin.nextInt();
        int b[];
        b=a;
        a=new int[a.length+newElement];
        for(int i=0;i<n;i++)
            a[i]=b[i];

        System.out.println("Please Enter new Values for new Elements");
        for(int i=n;i<a.length;i++){
            System.out.print("Enter a["+i+"]=");
            a[i]=cin.nextInt();
        }


        for(int i=0;i<a.length;i++)
            System.out.println("a["+i+"]="+a[i]);
    }
}


2.      Multidimensional Array
សំដៅលើ Array ច្រើនវិមាត្រ។ ជាទូទៅ  គេច្រើនប្រើត្រឹមតែ ២វិមាត្រ។

FORM:
            DataType   ArrayName[][]=new   DataType[element1][element2];

ឧទាហរណ៍៖
                                         Row    Column                           

          int a[][]=new   int[2][3];

a[0][0]
a[0][1]
a[0][2]
a[1][0]
a[1][1]
a[1][2]


import java.util.Scanner;
public class InputArray2{
            public static void main(String arg[]){
                        Scanner cin=new Scanner(System.in);
                        int r, c;
System.out.print(“Enter rows = ”);
r=cin.nextInt();
System.out.print(“Enter columns = ”);
c=cin.nextInt();
int a[][]=new int[r][c];
for(int i=0; i<r; i++){
for(int j=0; j<c; j++){
System.out.println(“Enter a[“+i+”][“+j+”] = ”);
a[i][j]=cin.nextInt();
}
System.out.println();
}
System.out.println(“Now, you can display “+r+” Rows “+c+” Columns”);
for(int i=0; i<r; i++){
for(int j=0; j<c; j++)
            System.out.print(a[i][j] + “\t”);
System.out.println();
}

            }
}



import java.util.Scanner;
public class AddElementArray{
            public static void main(String arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter n = ”);
                        n=cin.nextInt();
int a[]=new int[n];
for(int i=0; i<n; i++){
System.out.println(“Enter a[“+i+”] = ”);
a[i]=cin.nextInt();
}
int temp[];
temp=a;
int m;
System.out.print(“Enter m = ”);
m=cin.nextInt();
a=new int[n+m];
for(int i=0; i<n; i++)
a[i]=temp[i];
System.out.println(“Please, enter data for new elements.”);
for(int i=0; i<n+m; i++){
System.out.print(“Enter a[“+i+”] = ”);
a[i]=cin.nextInt();
}
for(int i=0; i<n+m; i++)
            System.out.println(“a[“+i+”] = ”+a[i]);
}
}






















Chapter 4

Introduction to Class


1.      Overview
Class ជាបណ្តុំ Instances variables និង Methods ដែល Instances variables
និង Methods ទាំងនោះ ជា Members របស់ Class
2.      Class Fundamentals
2.1.        The General form of Class
                  class ClassName{
DataType        instanceVariable;
returnType     methodName(arg){
//body
}
}

ឧទាហរណ៍៖
class Rectangle{                                          Class
double w;
double n;
double parameter(){                            Instance variable
return (w+n)*2;
}
double are(){
return w*n;                              Method
}
}

ចំណាំ៖
·     Instance variable ជា Variable ដែលត្រូវបានគេបង្កើតឡើងនៅក្នុង Class Variable ដែល មានឥទ្ធិពលពេញមួយ Class ហើយយើងក៏អាចយក variable នេះទៅប្រើប្រាស់នៅ ខាងក្រៅ class បានដែរ។
·     Method ជា Function មួយដែលត្រូវបានបង្កើតឡើងនៅក្នុង Class ដែលយើងបង្កើត Method នេះក្នុងគោលបំណងបង្កើនសមត្ថភាពឲ្យ Class

2.2.        Execute member of Class
        ដើម្បី Execute Members របស់ Class បាន យើងចាំបាច់ត្រូវតែបង្កើត Object ចេញពី Class ជាមុនសិន ហើយប្រើ Object នោះ ដើម្បីកោះហៅ Members របស់ Class

Form:
            ClassName      ObjectName                =          new   ClassName();
            Retangle          obj                               =          new   Rectangle();
ឧទាហរណ៍៖
public class Main{
public static void main(string arg[]){
Rectangle obj=new Rectangle();
obj.h = 10;
obj.w = 20;
System.out.println(“Parameter = ” +obj.parameter());
System.out.println(“Area = ”+obj.area());
}
}     

3.      Method
3.1.   Method has return type ជា Method ដែលមាន return type ជា double, long, int, ... នឹង នៅក្នុង Method មាន return value
3.2.   Method has not return type ជា Method ដែលមាន return type ជា void នឹងនៅក្នុង Method គ្មាន return value ទេ។

ឧទាហរណ៍៖
            public class SubProgram{                        700
double max(double a, double b){         67    
if(a>b)
            return a;
else
            return b;
}
void showStars(int n){
for(int i=1; i<=n; i++){
for(int j=1; j<=i; j++)
System.out.print(“*”);
                                                System.out.println();
}
}
}

Practice
របៀបបង្កើត User Interface (អាចសរសេរ Code + Design)
  1. Right-Click on Package → new → Jframe → Form → ដាក់ឈ្មោះ → Finish
  2. Click F6 to run form
  3. Click Palette to Design form


txtUsername
 
 
UserName:


txtPassword
 
 
Password:








Bottom
 

Log In
 

Exit
 
 




  1. Click on Frame → Property → Code → …
  2. Exit (cmdExit) → System.exit(0); (ចុច exit វាចាកចេញ)
  3. ប្តូរ Font → click on Label → Property → Font
  4. ដាក់ រូបភាព ឬ Logo : Label → Right-Click → Property → Icon
  5. ដាក់ Background ឲ្យ Frame → Label គូសពេញផ្ទៃ Frame

របៀបបង្កើត Menu bar (Open Project → D:\SH5)
  1. Right-Click on Package → New → JFrame Form → ដាក់ឈ្មោះ → Finish
  2. Palette (ផ្ទាំង Tool) → Swing Menu → ចាប់ Menu bar អូសដាក់លើផ្ទាំង Project
  3. Right-Click on Menu ដែលបានបង្កើត ​​ យក Edit Text ដើម្បីកែ Variable Name ដើម្បី ដាក់ជា (cmdFile, cmdEdit, ...)
  4. ដើម្បីសរសេរ Code ក្នុង Exit គឺត្រូវ Right-Click on Exit → យក Event →
  5. បើយើងចង់បន្ថែម Menu យើងត្រូវចុច Right-Click on Mouse លើ Menu ទាំងមូល រួចយក Add Menu
  6. នៅក្នុង File Menu យើងអាចបង្កើត Menu បន្ថែមទៀតដោយយើង Add from palette → Menu Item
  7. ដើម្បីសរសេរ Code ឲ្យ Exit មានដំណើរការ→ Right-Click on Exit → Event → Action → Performed → កន្លែង cmdExit វាយអក្សរថា System.exit(0);
  8. នៅក្នុង File, Edit ឬ ផ្សេងទៀត …. បើយើងចង់បបង្កើត Menu យើងអាចបង្កើតបានទៀត បើយើងបង្កើត Menu item គឺយើងបង្កើតបានតទៅទៀត។
ឧទាហរណ៍៖
          Navigate
                        Inspect → File Member

19/Feb/2011
4.      Constructors
        ជា Method មួយដែលមានឈ្មោះដូច Class ហើយ Method នេះនឹងត្រូវបាន execute នៅ ពេលដែល Object កកើតចេញពី Class
        Constructor មានតួនាទី Initialize ទិន្នន័យទៅឲ្យ Member របស់ Class

Create object
          ClassName              ObjectName = new                 Constructor();

ឧទាហរណ៍៖
        Rectangle                Object = new              Rectangle();


public class Boxes{
double w, h, d;
public Boxes(){
w = 10;
h = 10;
d = 10;
}
double area(){
            return w*h*d;
}
}

public class MainBox{
public static void main(String arg[]){
Boxes obj=new Boxes();
System.out.println (“width = ”+obj.w);
System.out.println (“height = ”+obj.h);
System.out.println (“depth = ”+obj.d);
System.out.println (“area = ”+obj.area());
}
}


v  Overloaded constructors: ជាការបង្កើត​ Constructor ច្រើននៅក្នុង Class តែមួយ ហើយ Constructors ទាំងអស់នោះចាំបាច់ត្រូវខុសគ្នាដោយចំនួន Arguments DataType របស់ Arguments
ឧទាហរណ៍៖
public class Boxes{
double w, h, d;
public Boxes(){
w = 10;
h = 10;
d = 10;
}
public Boxes(double width, double height, double depth){
w = width;
h = height;
d = depth;
}
double area(){
            return w*h*d;
}
}
public class MainBox{
public static void main(String arg[]){
Boxes  obj1=new  Boxes();

System.out.println (“area = ”+obj1.area());
System.out.println (“………………………….”);
Boxes obj2=new Boxes(5,5,5);

System.out.println (“area = ”+obj2.area());
}
}
v  Overloaded constructor មានផលប្រយោជន៍អាចឲ្យយើង initialize ទិន្នន័យទៅឲ្យ Object បានច្រើនរបៀប។

5.      “this” keyword: ជា keyword មានអត្ថន័យស្មើ Current object វាមានតួនាទីកោះហៅ Members របស់ Class

ឧទាហរណ៍៖
public class Boxes{
double w, h, d;
public Boxes(double w, double h, double d){
this.w = w;
this.h = h;
this.d = d;
}
}

6.      Object and Array
          យើងអាចបង្កើត object ជា array បាន ហើយយើងចាំបាច់យកធាតុនីមួយៗរបស់ array object ឲ្យកើតចេញពី constructor ណាមួយដាច់ខាត។
Form :
          ClassName   obj [] = new  ClassName [elements];
ឧទាហរណ៍៖
Boxes obj1;
obj1.w = 6 // can’t use

Boxes obj[] = new Boxes[2];
// obj[0].w = 1; can’t use

obj[0] = new Boxes();
obj[1] = new Boxes(5,5,5);

obj[0].w = 1; // can use




public class Student{
long id;
string name;
char gender;
string address;
public Student(long id, string name, char gender, string address){
this.id = id;
this.name = name;
this.gender = gender;
this.address = address;
}
}

import java.util.Scanner;
public class TestArray{
public static void mani(String arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter n = ”);
n=cin.nextInt();
Student obj[]=new Student[n];
long id; string name; char gender; string address;
for(int i=0; i<obj.length; i++){
System.out.print(“Enter ID = ”);
id = cin.nextLong();
System.out.print(“Enter Name = ”);
cin.nextLine();
name = cin.nextLine();
System.out.print(“Enter Gender = ”);
gender = cin.nextLine().charAt(0);
System.out.print(“Enter Address = ”);
address = cin.nextLine();
obj[i] = new Student(id, name, gender, address);
System.out.println(“____________________”);
}
System.out.println(“ID\tName\tGender\tAddress”);
for(int i=0; i<n; i++){
System.out.print(obj[i].id + “\t”);
System.out.print(obj[i].name + “\t”);
System.out.print(obj[i].gender + “\t”);
System.out.print(obj[i].address + “\t”);
System.out.println(“____________________”);
}
}
}

12 March, 2011
*      Object និង Array មានតួនាទីផ្ទុក Record
ឧទាហរណ៍៖
          ចូរសរសេរកម្មវិធីមួយដើម្បីបញ្ចូលទិន្នន័យជា Records នៃផលិតផលដែល Records នីមួយ ៗមាន Field ដូចខាងក្រោម៖
-        ID មានប្រភេទទិន្នន័យជា long
-        PName មានប្រភេទទិន្នន័យជា String
-        Qty មានប្រភេទទិន្នន័យជា long
-        UPrice មានប្រភេទទិន្នន័យជា float
-        Amount មានប្រភេទទិន្នន័យជា double (Not input by user)

public class Product{
long id;
string pname;
long qty;
float uprice;
double amount;
public Product(long id, string pname, long qty, float uprice){
this.id = id;
this.pname = pname;
this.qty = qty;
this.uprice = uprice;
this. amount = qty*uprice;
}
}




Import jave.util.Scanner;
Public class MainProduct{
Public static void main(String arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter number of records = ”);
n=cin.nextInt();
Product obj[]=new Product[n];
long id; string pname; long qty; float uprice;
for(int i=0; i<obj.length; i++){
System.out.print(“Enter ID = ”);
id=cin.nextLong();
System.out.print(“Enter Pname = ”);
cin.nextLine();
pname=cin.nextLine();
System.out.print(“Enter Qty = ”);
qty = cin.nextLong();
System.out.print(“Enter Uprince = $”);
uprice = cin.nextFloat();
obj[i]=new Product (id, pname, qty, uprice);
System.out.print(“Amount = $”+obj[i].amout);
System.out.println(“\n______________________\n”);
}
System.out.println(“ID\tPName\t\tQty\tUPrice\tAmount\n”);
for(int i=0; i<n; i++){
System.out.print(obj.[i].id+ “\t”);
System.out.print(obj.[i].pname+ “\t”);
System.out.print(obj.[i].qty+ “\t”);
System.out.print(“$”+obj.[i].uprice+ “\t”);
System.out.print(“$”+obj.[i].amount+ “\t”);
System.out.print(_______________________________________\n);
}
}
}

Homework:
ចូរសរសេរកម្មវិធីមួយដើម្បីផ្ទុក N Records របស់ Students ដែល Records នីមួយៗមាន
Field ដូចខាងក្រោម៖
-        ID មានប្រភេទទិន្នន័យជា long
-        SName មានប្រភេទទិន្នន័យជា String
-        Gender មានប្រភេទទិន្នន័យជា String
-        Address មានប្រភេទទិន្នន័យជា String
-        Year មានប្រភេទទិន្នន័យជា int
-        Class មានប្រភេទទិន្នន័យជា String
-        Java មានប្រភេទទិន្នន័យជា float
-        Acc មានប្រភេទទិន្នន័យជា float
-        C++ មានប្រភេទទិន្នន័យជា float
-        AVG មានប្រភេទទិន្នន័យជា double (Not input by user)
និងតំរៀបតាមលំដាប់ថយចុះនៃ AVG ។ (ធំជាងគេនៅខាងលើ)

public class Student{
long id;
string sname;
string gender;
string address;
int year;
string class;
float java, acc, cpp;
double avg(){
return(java+acc+cpp)/3;
}
Student copy(){
Student temp=new Student(id, sname, gender, address, year, Class, java, acc, cpp);
return temp;
}
public Student(long id, string sname, string gender, string address, int year, string
class, float java, float acc, float cpp){
this.id = id;
this.sname = sname;
this.gender = gender;
this.address = address;
this.year = year;
this.class = class;
this.java = java;
this.acc = acc;
this.cpp=cpp;
}
}

import java.text.DecimalFormat;
import java.util Scanner;
pubic class ArrayObj{
public static void main(String arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter number of Records = ”);
n=cin.nextInt();
Student obj[]=new Student[n];
long id; string sname; string gender; string address, int year; string class; float java; float acc; float cpp;
for(int i=0; i<obj.length; i++){
System.out.print(“Enter ID = ”);
id=cin.nextLong();
System.out.print(“Enter Student Name = ”);
cin.nextLine();
sname=cin.nextLine();
System.out.print(“Enter Gender = ”);
cin.nextLine();
gender=cin.nextLine();
System.out.print(“Enter Address = ”);
address=cin.nextLine();
System.out.print(“Enter Year = ”);
year=cin.nextInt();
System.out.print(“Enter CLass = ”);
cin.nextLine();
CLass=cin.nextLine();
System.out.print(“Enter Java = ”);
java=cin.nextFloat();
System.out.print(“Enter Access =”);
acc=cin.nextFloat();
System.out.print(“Enter C++ = ”);
cpp = cin.nextFloat();
obj[i]=new Student(id, sname, gender, year, class, java, acc, cpp);
System.out.println(“AVG = ”+obj[i].avg);
System.out.println(______________________________________\n);
}
System.out.println(\n__________________________________________\n);
System.out.println(“ID\tStudentName\t\tGender\tYear\tClass\tJava\tAcc
\tC++\tAVG\n”);
for(int i=0; i<n-1; i++)
for(int j=1+i; j<n; j++)
if(obj[i].avg()<obj[j].avg()){
Student temp;
temp=obj[i].copy();
obj[i]=obj[j].copy();
obj[j]=temp.copy();
}
DecimalFormat df=new DecimalFormat(“0.00”);
for(int i=0; i<n; i++){
System.out.print(obj[i].id+ “\t”);
System.out.print(obj[i].sname+ “\t”);
System.out.print(obj[i].gender+ “\t”);
System.out.print(obj[i].address+ “\t”);
System.out.print(obj[i].year+ “\t”);
System.out.print(obj[i].CLass+ “\t”);
System.out.print(df.format(obj[i].java)+ “\t”);
System.out.print(df.format(obj[i].acc)+ “\t”);
System.out.print(df.format(obj[i].c++) + “\t”);
System.out.print(df.format(obj[i].avg())+ “\t”);
System.out.print(\n______________________________________\n);
}
}
}

20/March/2011
*      Referenct Object
យើងអាចបញ្ចូលទិន្នន័យពី Object មួយទៅកាន់ Object មួយផ្សេងទៀត តែយើងត្រូវចង
ចាំថា Object ទាំងពីរនោះ មានលក្ខណៈជា ReferenceReferent Object មានន័យថា មាន Object ច្រើនឈរលើ Address រួមគ្នា បើសិនមាន Object ណាមួយផ្លាស់ប្តូរតម្លៃ​ នោះតម្លៃរបស់ Object ផ្សេងទៀតនឹងផ្លាស់ប្តូរតាមជាដាច់ខាត។
     ឧទាហរណ៍៖
Boxes obj1=new Boxes();
Boxes obj2=new Boxes(5,5,5);
Obj1=obj2; // Referent Object
ចំណាំ៖
     Referent Object គេតែងប្រើសំរាប់ចង Object ជាច្រើនបញ្ចូលគ្នា បើយើងត្រូវការបំបែកវា ចេញពីគ្នាវិញ យើងអាចយក Object ណាមួយឲ្យ Initialize ចេញពី Constructor ឬក៏អឲ្យ Object ណាមួយជា Referent ជាមួយ Object មួយផ្សេងទៀត។
*      Return Object
យើងអាចបង្កើត Method ដែលមាន Return Type ជា​ Class ហើយ Return value របស់វាចាំ
បាច់ជា Object ដែលចេញពី Class នោះ។
     Return Object គេច្រើនប្រើសំរាប់បញ្ជូនទិន្នន័យពី Object មួយទៅកាន់ Object មួយផ្សេង ទៀតដោយ Object ទាំងនោះ គ្មានលក្ខណៈជា Referent Object ទេ។

public class Boxes{
double w;
double h;
double d;
Boxes copy(){ // Return object
Boxes temp=new Boxes(w, h, d);
Return temp;
}
public Boxes(){
w=10;
h=10;
d=10;
}
public Boxes(double w, double h, double d){
this.w=w;
this.h=h;
this.d=d;
}
double area(){
            return w*h*d;
}
}


public class MainBox{
public static void main(String arg[]){
Boxes obj1=new Boxes();
Boxes obj2=new Boxes(5,5,5);
// obj1=obj2; // Referent Object
/*
obj1.d=obj2.d;
obj1.h=obj2.h;                                                             ៣ បន្ទាត់នេះគឺស្មើ១បន្ទាត់នេះ
obj1.w=obj2.w; */

obj1.d=obj2.copy(); // Not Referent Object
obj2.d=1;
obj2.h=1;
obj2.w=1;
System.out.println(“Width = ”+obj1.w);
System.out.println(“Height = ”+obj1.h);
System.out.println(“Depth = ”+obj1.d);
System.out.println(“_______________________”);
}
}
ចំណាំ៖
*      Runnable គឺជា Class ដែលផ្ទុកដំណើរការ ហើយដំណើរការដែលស្ថិតនៅក្នុង Runnable វា ដើរដោយឯករាជ្យមានន័យថា ដំណើរការនេះមិនរង់ចាំដំណើរការដទៃទេ ហើយដំណើរ ការ ដទៃក៏មិនរង់ចាំវាដែរ។
*      Thread គឺជា Class ដែលអាចបញ្ជាឲ្យ Runnable ដើរ ឬបញ្ឈប់ដំណើរការរបស់ Runnable
7.      ArrayList ជា Class ដែលស្ថិតនៅក្នុង Package Java.util.ArrayList វាមានតួនាទីផ្ទុក n records ដូចជា ArrayObject ដែរ តែយើងមិនចាំបាច់កំណត់ចំនួនធាតុជាមុនទេ។
            
             Form:
ArrayList<class> obj=new ArrayList<class>();

Ex: // ArrayList
ArrayList<student> obj=new ArrayList<student>();

Ex: // ArrayObject
Student obj[]=new Student[n];

Method in ArrayList
-        boolean add(Object record); ជា Method មានតួនាទី add object record ចូលក្នុង ArrayList បើសិនជា Record ណាមួយត្រូវបាន add  មុនគេ Record នោះនឹងស្ថិតនៅក្នុង Index ទី ០​ ហើយ Record ដែលបាន add បន្តបន្ទាប់ នឹងស្ថិតនៅក្នុង index បន្តបន្ទាប់ដោយស្វ័យប្រ វត្តិ។
-        Object set(int index, object record); ជា Method មានតួនាទីកែប្រែ Record ដែលស្ថិតនៅក្នុង index ណាមួយនៃ ArrayList
-        Object get(int index); ជា Method មានតួនាទីទាញយក Record ពី ArrayList ដែលស្ថិតនៅ ក្នុង Index ណាមួយ។
-        int size(); ជា Method មួយមានតួនាទីទទួលយកចំនួន Record របស់ ArrayList
-        boolean remove(object record); ជា Method មួយមានតួនាទី Remove record ពី ArrayList ទៅតាម Record ដែលយើងបានកំណត់។







Chapter 5

More on Class

1.      Overview

            យើងអាចបង្កើត Method ដែលមាន Arguments ជា Objects បាន ហើយ Arguments នោះ ត្រូវការ Parameters ជា Objects ដែលមានប្រភេទដូចគ្នា។

//Sub-program
public class Product{
long id;
String pname;
long qty;
float uprice;
double amount(){
return qty*uprice;
}
boolean equal(Product obj){
if(obj.id==id&&obj.paname.equals(pname)&&
obj.qty==qty&&obj.uprice==uprice)
return true;
else
            return false;
}
public Product(long id, string pname, long qty, float uprice){
this.id=id;
this.pname=pname;
this.qty=qty;
this.uprice=uprice;
}
}
//Main-program
public class Mproduct{
public static void main(String[] args){
Product obj1=new Product(1, “ABC”, 200, 23);
Product obj2=new Product(1, “ABC”, 200, 23);
if(obj1.equal(obj2))
            System.out.println(“The same record.”);
else
            System.out.println(“Not the same record.”);
}
}

2.      Parameter passing
ការបញ្ជូនទិន្នន័យពី Parameter ទៅ Arguments យើងអាចបញ្ជូនបានពីរយ៉ាងគឺ៖ Pass by value និង Pass by reference
2.1  Pass by value

//Sub-program
public class Data{
void changeValue(int a, int b){
a+=2;
b+=4;
}
}
//Main-program
public class main{
public static void main(String[] args){
int a, b;
a=10;
b=10;
obj.changeValue(a, b); // Pass by value
System.out.println(“A = ”+a);
System.out.println(“B = ”+b);
}
}
2.2  Pass by reference
//Sub-program
public class Data{
int a, b;
void changeValue(Data obj){
obj.a+=2;
obj.b+=4;
}
}
//Main-program
public class main{
public static void main(String[] args){
Data obj=new Data();
obj.a=10;
obj.b=10;
obj.changeValue(obj); // Pass by reference
System.out.println(“A = ”+obj.a);
System.out.println(“B = ”+obj.b);
}
}

ចំណាំ៖
          ចំពោះ Parameter ដែលជា Variable ជាធម្មតា វាចាំបាច់ត្រូវមានលក្ខណៈជា Pass by value ដាច់ខាត។
          ចំពោះ Parameter ដែលជា object ឬក៏ជា Array វាចាំបាច់ត្រូវមានលក្ខណៈជា Pass by reference ដាច់ខាត។

3.      static “keyword”
ជា Keyword ដែលបញ្ជាក់ឲ្យ Members របស់ Class ថា​ Member ទាំងនោះមាន Address មួយជាក់លាក់ដែលវាមិនអាចប្រែប្រួល Address របស់វាទៅតាម Object នោះទេ។

Sub-program
public class Data{
static int a;
int b;
}
Main-program
class Main{
public static void main(String[] args){
Data obj1=new Data();
// All members can use object(Static or non-static)
obj1.a=1;
obj2.b=1;

// Static members can use without object
Data.a=10;

// Non-static member cannot use without object
// Data.b=10;

Data obj2=new Data();
// All objects use the same static members
Obj2.a=20;
System.out.println(“A = ”+obj1.a);
System.out.println(“A = ”+obj2.a);
System.out.println(“A = ”+Data.a);
}
}

ចំណាំ៖
             Static keyword ជាទូទៅ គេច្រើនយកទៅប្រើដើម្បីបង្កើតជា Global variableGlobal variable នៅក្នុង Java ជា Variable មួយដែលអាចប្រើឆ្លងពី Class មួយទៅកាន់ Class មួយផ្សេង ទៀត ឬក៏ពី Package មួយទៅកាន់ Package មួយផ្សេងទៀត។

















Chapter 6

Inheritance


1.      What is inheritance?
Inheritance គឺជាការផ្ទេរមរតកពី Class មួយទៅកាន់ Class មួយផ្សេងទៀត។
·         SuperClass គឺជា Class មួយដែលផ្តល់ Members ទៅឲ្យ Class ដទៃទៀត។
·         SubClass គឺជា Class ដែលទទួល Member ពី Class ដទៃ។
2.      Inheritance
Form:                                    
class SubClass entends SuperClass{
// Member SubClass
}

ឧទាហរណ៍៖
class SuperClass{
int a, b;
}
class Sub extends SuperClass{
int c;
}

3.      Using “super” keyword
3.1.   “super” keyword call Constructors of SuperClass
ឧទាហរណ៍៖
class SuperClass{
int a, b;
public SuperClass(int a, int b){
this.a=a;
this.b=b;
}
}
class Sub extends SuperClass{
int c;
public Sub(int a, int b, int c){
super(a, b);
this.c=c;
}
}

3.2.   “super” keyword call Member SuperClass
ឧទាហរណ៍៖
class SuperClass{
int a, b;
void show(){
System.out.println(“A = ”+a);
System.out.println(“B = ”+b);
}
public SuperClass(int a, int b){
this.a=a;
this.b=b;
}
}
class Sub extends SuperClass{
int c;
void show(){
            super.show();
System.out.println(“C = ”+c);
}
public Sub(int a, int b, int c){
super(a, b);
this.c=c;
}
}

4.      Method overriding
  • Overriding method គឺជាការបង្កើត Method នៅក្នុង SubClass ដែលមានឈ្មោះ និង Arguments ដូចគ្នាទាំងស្រុងទៅនឹង Method ដែលស្ថិតនៅក្នុង SuperClass

ឧទាហរណ៍៖
class Star{
void show(){
for(int i=1; i<=5; i++){
System.out.print(“*”);
System.out.println();
}
}// Overloaded method
void show(int n){
for(int i=1; i<=n; i++){
for(int j=1; j<=i; j++){
System.out.print(“*”);
System.out.println();
}
}// Overloaded method
}
class MoreStar extends Star{
void show(int n, char ch){
for(int i=1; i<=n; i++){
for(int j=1; j<=i; j++){
System.out.print(“*”);
System.out.println();
}
}// Overloaded method
void show(){
for(int i=1; i<=5; i++){
for(int j=1; j<=i; j++){
System.out.print(“*”);
System.out.println();
}
}// Override method
}
public class MainStart{
public static void main(String[] args){
MoreStar obj=new MoreStar();
obj.show();
obj.show(10);
obj.show(20, @);
}
}


















ចំណាំ៖
Overloaded                                              ​​​      VS             Override

1.      Method ច្រើនមានឈ្មោះដូចគ្នា ហើយ ពួកវាត្រូវខុសគ្នាទៅដោយចំនួន Argu-ments DataType របស់ Arguments
2.      គ្រប់ Overloaded method ទាំងអស់ យើងអាចបង្កើត Object ចេញពី Class ហើយកោះហៅ Method ទាំងនោះយក មកប្រើដោយគ្រាន់តែប្តូរប្រភេទ Arguments
3.      យើងអាចបង្កើត Overloaded Method បានទាំងនៅក្នុង SuperClass និងនៅក្នុង SubClass

1.      Method ច្រើនមានឈ្មោះដូចគ្នា ហើយ ពួកវាត្រូវដូចគ្នាទាំងស្រុង ទាំងចំនួន Arguments និង DataType របស់ Arguments
2.      គ្រប់ Overrided Method ទាំងអស់ យើងអាចបង្កើត Object ចេញពី Class ហើយកោះហៅប្រើ បានតែមួយគត់ គឺ Method ដែលស្ថិតនៅក្នុង Class នោះ។
3.    យើងអាចបង្កើត Overrided method បានតែនៅក្នុង SubClass តែប៉ុណ្ណោះ។


08 – May – 2011
5.      Abstract class
Abstract class ជា class មាន method មួយចំនួនមានលក្ខណៈមិនពេញលេញ។
Abstract class can refer with other SubClass

ឧទាហរណ៍៖
abstract class AbSimple{
void show(){
System.out.println(“You can call me.”);
}
abstract void show(String txt);
}
class Sub extends AbSimple{
void show(String txt){
System.out.println(“txt”);
}
}
public class Main{
public static void main(String[] args){
AbSimple obj=new AbSimple(){
// @override
void show(String txt){
Systme.out.println(txt);
}
};
obj.show(“Just override”);
Sub obj2=new Sub();
Obj2.show();
}

6.      Using “final” keyword
6.1.   Using “final” keyword to prevent overriding

ឧទាហរណ៍៖

abstract class AbSimple{
abstract void show(String txt); // Must override
final void show(){
            System.out.println(“Cannot override at SubClass.”);
}
void show (String txt, int n){
System.out.println(txt+“ ”+n);
System.out.println(“Can or cannot override.”);
}
}
class Sub extends AbSimple{
            void show(String txt){
System.out.println(txt);
}
}
public class Main{
public static void main(String[] args){
AbSimple obj=new AbSimple(){
// @override
void show(String txt){
Systme.out.println(txt);
}
};
obj.show(“Just override”);
Sub obj2=new Sub();
Obj2.show();
}


6.2.   Using “final” keyword to prevent Inheritance



Ex:
final   class   FinalClass  {
            int  a;
            void  show(){
                        System.out.println(“A=”+a);
            }
}

//can’t Inheritance
class   Sub  extends  FinalClass{
}// FinalClass can not extends to other SubClass   





















No comments:

Post a Comment