Sunday, March 15, 2020

ஜாவா அப்ஸ்ட்ராக்ட் கிளாஸ் மற்றும் இன்டெர்ஃபேஸ் என்ன வேறுபாடு?


இன்டெர்ஃபேஸ்
இன்டெர்ஃபேஸ் எனப்படுவது ஒரு கிளாசில் இம்ப்ளிமென்ட் செய்யக்கூடிய ப்ளூ பிரிண்ட் ஆகும். இதில் மெத்தட் அறிவிப்பு மட்டுமே இருக்கும். கன்கிரிட்(concrete) மெத்தட்கள் இருக்காது.கன்கிரிட் மெத்தட் என்பது கோடிங்குடன்(மெத்தட் பாடியுடன்) கூடிய மெத்தட்கள் ஆகும்.
ஒரு இன்டெர் ஃபேஸிற்கு ஆப்ஜெக்ட் உருவாக்க இயலாது. ஆனால் அதை இம்ப்லிமென்ட் செய்யும் கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்கலாம்.
ஒரு கிளாஸ் எத்தனை இன்டெர்ஃபேஸையும் இம்ப்லிமென்ட் செய்யலாம்.
அப்ஸ்ட்ராக்ட் கிளாஸ்.
அப்ஸ்ட்ராக்ட்(abstract) என்ற கீவேர்டுடன் கூடிய கிளாஸ் அப்ஸ்ட்ராக்ட் கிளாஸ் எனபடுகின்றது. ஒரு அப்ஸ்ட்ராக்ட் கிளாஸில் குறைந்த பட்சம் ஒரு அப்ஸ்ட்ராக்ட் மெத்தட்டாவது இருக்க வேண்டும். அப்ஸ்ட்ராக்ட் மெத்தட் என்பது அறிவிப்பு மட்டும் இருக்கும்,மெத்தட் பாடி இருக்காது. ஆனால் அப்ஸ்ட்ராக்ட் கிளாஸில் ஒன்று அல்லது அதற்கு மேற்பட்ட கன்கிரிட் மெத்தட்கள் இருக்கலாம்.
ஒரு கிளாஸ் ஒரே ஒரு அப்ஸ்ட்ராக்ட் கிளாசை மட்டுமே இன்ஹெரிட் செய்ய முடியும்.
அப்ஸ்ட்ராக்ட் கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்க இயலாது. ஆனால் அதை இன்ஹெரிட் செய்யும் கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்கலாம்.

ஒரு இன்டெர்ஃபேஸில் உள்ள எல்லா மெத்தட்களுக்கும் அதை இம்ப்லிமென்ட் செய்யும் கிளாஸில் அந்த மெத்தடின் இம்ப்லிமென்டேசன் இருக்க வேண்டும் அதே போன்று ஒரு அப்ஸ்ட்ராக்ஃப்ட் கிளாஸில் உள்ள எல்லா அப்ஸ்ட்ராக்ட் மெத்தட்களுடைய இம்ப்லிமென்டேசன் அந்த கிளாஸை இன்ஹெரிட் செய்யும் கிளாஸில் இருக்க வேண்டும்.
இன்டெர்ஃபேஸ் பயன்பாட்டிற்கான காரணம்.
1.      அப்ஸ்ட்ராக்சனை உருவாக்க உதவுகின்றது.
2.      ரன் டைமில் டைனமிக்  மெத்தட் ரெசொலூசனை ஆதரிக்கின்றது.
3.      லூஸ் கப்லிங்கை உருவாக்க உதவுகின்றது
4.      இன்ஹெரிடன்ஸ் ஹையர் ஆர்க்கிவை விட்டு மெத்தட் உருவாக்கத்தை பிரிக்கின்றது.
அப்ஸ்ட்ராக்ட் கிளாஸை பயன்படுத்த காரணம்.
1.      சப் கிளாஸிற்கான டிஃபால்ட் ஃபங்க்சனாலிட்டியை உருவாக்க உதவுகின்றது.
2.      ஃபியூச்சர் ஸ்பெசிபிக் கிளாசிற்கான  டெம்ப்லேட்டை உருவாக்கச் உதவுகின்றது.
3.      அதன் சப்கிளாஸ்களிற்கான பொதுவான இன்டெர்ஃபேசை உருவாக்க இயலுகின்றது.
4.      கோட் ரியூசபிளிட்டியை பயன்படுத்த உதவுகின்றது.

அப்ஸ்ட்ராக்ட் கிளாஸ் மற்றும் இன்டெர்ஃபேஸ் வித்தியாசங்கள்.
ஒரு அப்ஸ்ட்ராக்ட் கிளாஸ் ஆனது அதன் சப் கிளாஸ்கள் இம்ப்லிமென்ட் அல்லது ஓவர் ரைட் செய்யக்கூடிய ஃபங்க்சனாலிட்டியை தருகின்றது.இன்டெர்ஃபேஸ் ஃபங்க்சனாலிட்டியை அறிவிக்கிறதே தவிர இம்ப்ளிமென்ட் செய்வதில்லை.
ஒரு கிளாஸ் ஒரே அப்ஸ்ரட்ராக்ட் கிளாசை மட்டுமே இன்ஹெரிட் செய்ய இயலும் அதே நேரத்தில் எத்தனை இன்டெர்ஃபேஸையும் இம்ப்லிமென்ட் செய்யலாம்.
வேகத்தை பொருத்தவரை இன்டெர்ஃபேசை விட அப்ஸ்ட்ராக்ட் கிளாஸ் வேகமானது.
இன்டெர்ஃபேசஸ் அப்ஸ்ட்ராக்ட் மெத்தட்களை மட்டுமே கொண்டிருக்கும். ஆனால் அப்ஸ்ட்ராக்ட் கிளாஸ் அப்ஸ்ட்ராக்ட் மற்றும் கன்கிரிட் மெத்தட்கள் இரண்டை மட்டுமே கொண்டிருக்கும்.
எதிர்காலத்தில் நிரலை மாற்றியமைக்க வேண்டியிருந்தால் இன்டெர்ஃபேசை உபயோகிக்கலாம். இண்டிபெண்டென்சை தவிர்ப்பதற்கு அப்ஸ்ட்ராக்ட் கிளாஸை உபயோகிக்கலாம்.
இன்டெர்ஃபேஸில் புதிய கண்டென்ட் வரும் பொழுது அதன் இம்ப்லிமெண்டேசன் கிளாசை தேடி அதை மாற்றுவது கடினம்.
அப்ஸ்ட்ராக்ட் கிளாசை பொருத்த வரை அதன் டிஃபால்ட் இம்ப்லிமென்டேசனை அட்வான்டேஜாக எடுத்துக் கொள்ளலாம்.
இன்டெர்ஃபேசஸ் ஆக்சஸ் மாடிஃபையரை கொண்டிருக்காது. அதன் மெம்பர்கள் டிஃபால்ட் ஆகவே பப்ளிக் தான்.அப்ஸ்ட்ராக்ட் கிளாஸ் மெம்பர்கள் ஆக்சஸ் மாடிஃபையர்களைக் கொண்டிருக்கும்.
இன்டெர்ஃபேஸில் டேட்டா ஃபீல்டுகள் இருக்க இயலாது. அப்ஸ்ட்ராக்ட் கிளாசில் டேட்டா ஃபீல்டுகள் இருக்கலாம்.
இன்டெஃபேஸ் அப்ஸ்ட்ராக்ட் என்பதால் எந்த கோடிங்கும் இருக்காது.அப்ஸ்ட்ராக்ட் கிளாசினால் கம்ப்ளீட் டிஃபால்ட் (ஓவர் ரைட் செய்யக்கூடிய)கொண்டிருக்க முடியும்.
இன்டெர்ஃபேசில் கன்ஸ்ட்ரக்டர், டெஸ்ட்ரக்டர் கொண்டிருக்க இயலாது.அப்ஸ்ட்ராக்ட் கிளாசில் கன்ஸ்ட்ரக்டர், டெஸ்ட்ரக்டர் கொண்டிருக்க இயலும்.
இன்டெர்ஃபேஸில் ஒரு மெத்தடை அப்ஸ்ட்ராக்ட் என அறிவிக்க abstract என்ற கீவேர்டு தேவையில்லை. அப்ஸ்ட்ராக்ட் கிளாசில் அது அவசியம்.
இன்டெர்ஃபேஸ் சிண்டாக்ஸ்.
interface name{
//methods
}

இன்டெர்ஃபேஸ் சான்று நிரல்.
interface Pet {
    public void test();
}
class Dog implements Pet {
    public void test() {
        System.out.println("Interface Method Implemented");
    }
    public static void main(String args[]) {
        Pet p = new Dog();
        p.test();
    }
}
 
 



அப்ஸ்ட்ராக்ட் கிளாஸ் சிண்டாக்ஸ்.
abstract class name{
    // code
}

அப்ஸ்ட்ராக்ட் கிளாஸ் சான்று நிரல்.
abstract class Shape {
    int b = 20;
    abstract public void calculateArea();
}
 
public class Rectangle extends Shape {
    public static void main(String args[]) {
        Rectangle obj = new Rectangle();
        obj.b = 200;
        obj.calculateArea();
    }
    public void calculateArea() {
        System.out.println("Area is " + (obj.b * obj.b));
    }
}
நன்றி.
முத்து கார்த்திகேயன்,மதுரை.



ads Udanz

No comments:

Post a Comment