جاوا

جلسه ۴۲: متدهای استاتیک در اینترفیس ها در جاوا

public class Car implements Vehicle {
    
    public static void main(String args[]){
        Car car = new Car();
        
        Vehicle.cleanVehicle(); //This will compile.
    }
}

آزمون

0
ایجاد شده در

Quiz 28

1 / 1

متد پیش فرض چیست؟

امتیاز شما

میانگین امتیازها 0%

0%

در جلسه بعدی ، functional interface را بررسی خواهیم کرد.
public interface Vehicle {

    static void cleanVehicle(){
        System.out.println("I am cleaning vehicle");
    }
}
کلاس زیر کامپایل خواهد شد زیرا ما از طریق ارجاع به اینترفیس ، متد استاتیک اینترفیس را فراخوانی می کنیم.
public interface Vehicle {

    static void cleanVehicle(){
        System.out.println("I am cleaning vehicle");
    }
}
public class Car implements Vehicle {
    
    public static void main(String args[]){
        Car car = new Car();
        
        Vehicle.cleanVehicle(); //This will compile.
    }
}

آزمون

0
ایجاد شده در

Quiz 28

1 / 1

متد پیش فرض چیست؟

امتیاز شما

میانگین امتیازها 0%

0%

در جلسه بعدی ، functional interface را بررسی خواهیم کرد.
public interface Vehicle {

    static void cleanVehicle(){
        System.out.println("I am cleaning vehicle");
    }
}
در اینترفیس فوق ، در کلاس Car خطای کامپایل دریافت می کنیم زیرا یک متد استاتیک نمی تواند override شود. همچنین ، از آنجا که یک متد استاتیک پنهان است ، نمی توانیم آن را از طریق شی کلاس مشتق شده فراخوانی کنیم پس کد زیر نیز کامپایل نخواهد شد.
public class Car implements Vehicle {
    
    public static void main(String args[]){
        Car car = new Car();
        
        car.cleanVehicle();  //This will not compile.
        
    }
}
public interface Vehicle {

    static void cleanVehicle(){
        System.out.println("I am cleaning vehicle");
    }
}
کلاس زیر کامپایل خواهد شد زیرا ما از طریق ارجاع به اینترفیس ، متد استاتیک اینترفیس را فراخوانی می کنیم.
public interface Vehicle {

    static void cleanVehicle(){
        System.out.println("I am cleaning vehicle");
    }
}
public class Car implements Vehicle {
    
    public static void main(String args[]){
        Car car = new Car();
        
        Vehicle.cleanVehicle(); //This will compile.
    }
}

آزمون

0
ایجاد شده در

Quiz 28

1 / 1

متد پیش فرض چیست؟

امتیاز شما

میانگین امتیازها 0%

0%

در جلسه بعدی ، functional interface را بررسی خواهیم کرد.این جلسه متدهای استاتیک در اینترفیس ها و دلیل معرفی آنها در جاوا ۸ را بررسی می کند. موارد زیر را بیان خواهیم کرد:
  • متد استاتیک در اینترفیس چیست؟

متد استاتیک در اینترفیس چیست؟

متد های استاتیک در اینترفیس ها مشابه متد های پیش فرض است اما تنها تفاوت در این است که نمی توانید آنها را override کنید. پس با وجود متدهای پیش فرض ، چه نیازی به متدهای استاتیک در اینترفیس ها داریم؟ فرض کنید به پیاده سازی یک متد در رابط کاربری خود نیاز دارید ولی نمی خواهید این پیاده سازی در کلاس مشتق شده override شود ، بنابراین می توانید متد را به صورت استاتیک اعلام کنید. در مثال زیر ، ما یک اینترفیس Vehicle با یک متد استاتیک به نام ()cleanVehicle تعریف کرده ایم.
public interface Vehicle {

    static void cleanVehicle(){
        System.out.println("I am cleaning vehicle");
    }
}
کلاسی به نام Car را اعلام می کنیم که این اینترفیس Vehicle را پیاده سازی می کند.
public class Car implements Vehicle {
    
    @Override
    public void cleanVehicle() {
        System.out.println("Cleaning the vehicle");
    }

    public static void main(String args[]) {
        Car car = new Car();
        car.cleanVehicle();

    }
}
public interface Vehicle {

    static void cleanVehicle(){
        System.out.println("I am cleaning vehicle");
    }
}
در اینترفیس فوق ، در کلاس Car خطای کامپایل دریافت می کنیم زیرا یک متد استاتیک نمی تواند override شود. همچنین ، از آنجا که یک متد استاتیک پنهان است ، نمی توانیم آن را از طریق شی کلاس مشتق شده فراخوانی کنیم پس کد زیر نیز کامپایل نخواهد شد.
public class Car implements Vehicle {
    
    public static void main(String args[]){
        Car car = new Car();
        
        car.cleanVehicle();  //This will not compile.
        
    }
}
public interface Vehicle {

    static void cleanVehicle(){
        System.out.println("I am cleaning vehicle");
    }
}
کلاس زیر کامپایل خواهد شد زیرا ما از طریق ارجاع به اینترفیس ، متد استاتیک اینترفیس را فراخوانی می کنیم.
public interface Vehicle {

    static void cleanVehicle(){
        System.out.println("I am cleaning vehicle");
    }
}
public class Car implements Vehicle {
    
    public static void main(String args[]){
        Car car = new Car();
        
        Vehicle.cleanVehicle(); //This will compile.
    }
}

آزمون

0
ایجاد شده در

Quiz 28

1 / 1

متد پیش فرض چیست؟

امتیاز شما

میانگین امتیازها 0%

0%

در جلسه بعدی ، functional interface را بررسی خواهیم کرد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا