Abstract class
Abstract class: គឺ class ដែលប្រើជាមួយ keyword abstract នៅមុខ keyword class។
abstract class ត្រូវតែមាន abstract method យ៉ាងតិចក៏មួយដែរ និង abstract method គឺគ្មាន body {} រឺយើងអាចហៅបានថា method signature។ ហើយចំពោះ method ធម្មតា(method concrete) មានក៏បាន អត់ក៏បាន។
abstract method យើងត្រូវដាក់ access modifier ជា public, protect រឺក៏ default ហាមដាច់ខាតប្រើជាមួយ private ពីព្រោះ private មិនអាចហៅប្រើនៅក្រៅ class បានទេ។
abstract class វាមិនអាចបង្កើត object (instantiated) បានទេ។
abstract class គឺជាលក្ខណលាក់កូដនៃ implement
public abstract class Animal{ //default method public void eat(){ } //Abstract method public abstract void sleep(); }
abstract class នៅពេលយើង inheritance ទៅ sup class មួយទៀត គឺយើងត្រូវតែ override abstractor method មកប្រើប្រាស់ជាដាច់ខាត (implement)។ ប្រសិនជាយើងមិន implement ទេនោះកូដនឹង error។
public abstract class Computer { // abstract method public abstract void brand(); //default method public void price(int price){ System.out.println("Computer is price:"+price); } }
public class Mac extends Computer { @Override public void brand() { // TODO Auto-generated method stub System.out.println("Computer is Mac pro"); } }
ខាងក្រោមនេះកូដលំហាត់ទាក់ទងទៅនឹង abstract class
public abstract class Animal { public void eat(String food) { System.out.println("This animal eat "+food); } public void sleep(int hours) { System.out.println("This animal sleeps "+hours+"h"); } public abstract void makeNoice(); }
public class Cat extends Animal { @Override public void makeNoice() { // TODO Auto-generated method stub System.out.println("Meow Meow"); } }
public class Cow extends Animal { @Override public void makeNoice() { System.out.println("Mor Mor.."); } }
public class run { public static void main(String[] args) { Animal animal = new Cat(); animal.eat("Fish"); animal.sleep(5); animal.makeNoice(); animal = new Cow(); animal.eat("grass"); animal.sleep(8); animal.makeNoice(); } }

Note: ចំពោះ super class អាចហៅ sub class (point to sub class) ប្រើបាន ប៉ុន្តែ sub class មិនអាចហៅ super class ប្រើបានទេ។ យើងបានឃើញហើយនៅឧទាហរណ៍ខាង ដោយ super class Animal បង្កើត objet ជា Cat(); បាន ប៉ុន្តែ Cat(); មិនអាចបង្កើត object Animal(); បានទេ។
Interface
interface វាស្រដៀងទៅនឹង abstract class ដែរ ប៉ុន្តែវាមិនប្រើ keyword class ទេ គឺវាប្រើ keyword interface។ interface វាគឺដើរតួនាទីជា abstract មួយរយភាគរយ។
interface គឺមានតែ static constant ឬ static field ។
Constant = final គឺជាតំលៃថេ ដែលមិនអាចកែប្រែបាន
static field គឺជារបស់ class។ ហើយចំពោះគ្រាប់ field របស់ abstract ដាច់ខាត់ត្រូវតែជា public static final ប៉ុន្តែយើងមិនដាក់ក៏បាន ដោយសារ default របស់វាចាប់យក public static final ដោយស្វាយប្រវត្តិ (automatic) ។
static គឺជាការបញ្ជាក់ថាវារបស់ class មួយនឹង ឬបញ្ជាក់ថាវាជារបស់ type មួយនឹង ។
interface គឺមានតែ signature method តែប៉ុណ្នោះ។ ហើយ method គឺដាច់ខាត់ត្រូវតែជា public abstract។
interface ដូចទៅនឹង abstract class ដែរដោយវាមិនអាចបង្កើត object បានទេ។ ការបង្កើតវាមកគឺសំរាប់ឲ្យវាដើរតួនាទីជា super class ក្នុងការកំណត់ក្បួនច្បាប់ទុកឲ្យប្រើប្រាស់ ហើយវាមិនត្រូវផ្ទេមរតកអ្វីទេ។
syntax interface
public interface nameOfInterfaceClass{ //abstract method dataType nameOfMethod(parameter); //abstract method //abstract method }
final field គឺជា field ដែលកំណត់មកមិនអាចកែប្រែបាន
public interface Animal{ public final int waterBolt = 100; public final int waterFroze = 0; }
នេះគឺជាបង្កើត interface នៅ eclips

abstract អាចប្រើជាមួយ multiple inheritance។

ឧទាហរណ៍
//interfacepublic interface Animal { public void eat(String food); void sleep(int house); void makeNoice(); }// class implement from interface នៅពេលនោះវានឹងទាមទាឲ្យយើង implement នៃ method interface Animal
public class Dog implements Animal{ @Override public void eat(String food) { // TODO Auto-generated method stub System.out.println("The dog is eat "+food); } @Override public void sleep(int house) { // TODO Auto-generated method stub System.out.println("The dog pleep "+house+"h"); } @Override public void makeNoice() { // TODO Auto-generated method stub System.out.println("Wow Wow..."); } }
public class Run { public static void main(String[] args) { Dog dog = new Dog(); dog.eat("Rice"); dog.sleep(10); dog.makeNoice(); } }

ការប្រើ implement ចាប់ពីចំនួន២ឡើងទៅ ដោយយើងប្រើ ","បន្តវា
//interface 1public interface Animal { public void eat(String food); void sleep(int house); void makeNoice(); }// interface 2
public interface Activeable { void run(double far); }// interface 2
public class Dog implements Animal, Activeable{ @Override public void eat(String food) { // TODO Auto-generated method stub System.out.println("The dog is eat "+food); } @Override public void sleep(int house) { // TODO Auto-generated method stub System.out.println("The dog pleep "+house+"h"); } @Override public void makeNoice() { // TODO Auto-generated method stub System.out.println("Make noice is Wow Wow..."); } @Override public void run(double far) { // TODO Auto-generated method stub System.out.println("The dog can run "+far+"m/h"); } }
public class Run { public static void main(String[] args) { Dog dog = new Dog(); dog.eat("Rice"); dog.sleep(10); dog.makeNoice(); dog.run(1000.50); } }

ខាងក្រោមនេះយើងប្រើលាយចូលគ្នារវាង interface, class និង abstract class
//interfacepublic interface Animal { public void eat(String food); void sleep(int house); void makeNoice(); }//Abstract class
public abstract class Speak { abstract void speak(); }// extends និង implement
public class Dog extends Speak implements Animal{ @Override public void eat(String food) { // TODO Auto-generated method stub System.out.println("The dog is eat "+food); } @Override public void sleep(int house) { // TODO Auto-generated method stub System.out.println("The dog pleep "+house+"h"); } @Override public void makeNoice() { // TODO Auto-generated method stub System.out.println("Wow Wow..."); } @Override void speak() { // TODO Auto-generated method stub System.out.println("The dog can't speak"); } }
public class Run { public static void main(String[] args) { Dog dog = new Dog(); dog.eat("Rice"); dog.sleep(10); dog.makeNoice(); dog.speak(); } }

Abstract class VS interface

0 Comments