абстракцията в java е една от важните теми в ориентираното обектно програмиране. резюметата в java са модификатори за класове и функции. абстракцията основно означава скриване на подробности от нашия потребител и показване само на функционалността. те са два начина за използване на абстракция:

  • интерфейси
  • абстрактни класове

нека първо говоря за абстрактни класове. можем да ги декларираме с „абстрактна“ ключова дума, преди да напишем ключовата дума клас. нека видим някои примери за абстрактни класове, за да имате добра интуиция за тази концепция:

получаване на абсолютната стойност на променлива:

abstract class MyAbsClass{
abstract int getAbslouteValue(int input) ;
}
public class javacoding extends MyAbsClass {
int getAbslouteValue(int input){
return Math.abs(input) ;
}
public static void main(String args[]){
MyAbsClass object1 = new javacoding() ;
System.out.print(object1.getAbslouteValue(-2)) ;
// output : 2 }}

Възраст за потвърждаване:

// abstract class
abstract class MyAbstractClass {
//abstract method 
abstract void func(); 
} 
class UnderAge18 extends MyAbstractClass {
void func(){
System.err.print("bro you are under 18") ; 
}
} 
class OverAge18 extends MyAbstractClass{ 
void func(){
System.out.print("ok bro") ; 
}}
public class javacoding {
public static void main (String args[]){ 
int age = 19 ; 
MyAbstractClass Obj1 ; 
if (age >= 18){
Obj1 = new OverAge18() ; 
}
else {
Obj1 = new UnderAge18() ; }
Obj1.func() ; 
// output : ok bro 
}}

Мисля, че сега имате добра интуиция за абстрактни класове, забележете абстрактната ключова дума преди методите, която написах. ако искате абстрактен клас да модифицира класа, който искате, първо трябва да го наследите, а сега нека навлезем в някои подробности за абстрактните класове:

  • Абстрактните класове, също като нормалните класове, могат да имат конструктори, могат да имат нормални методи без абстрактна ключова дума.
  • те не могат да бъдат инстанцирани
  • те могат да имат крайни методи
  • те могат да имат и статични методи

И така, нека да преминем към интерфейсите:

Първо, какво е интерфейс! добре, интерфейсът е син отпечатък на клас. съдържа статични константи и абстрактни методи :D. нека да видим защо интерфейсът е толкова полезен!

  • можем да използваме множествено наследяване с тях
  • те са лесни за използване

Забележка: Множественото наследяване означава наследяване на два класа в един

сега нека видим някои примери за интерфейс по същата причина, поради която видяхте примери за абстрактни класове:

Показване на дата:

import java.util.Date ;
// interface named inter
interface  inter {

void show_date()  ;
}
// implementing  
class ShowDate implements inter {
public void show_date (){
Date d = new Date() ;
System.out.print("date is : "+ d.toString()) ;
}
}
public class javacoding   {
public static void main (String args[]){
ShowDate Object = new ShowDate() ;
Object.show_date();
}
}

изчисляване на скоростта на светлината за 10 секунди

// our interface
interface s {
// speed of light static constant
final int speed_of_light = 300000 ;
}
// main class implements
public class javacoding implements s {
public static void main (String args[]){
// since constants are static i can use them easily
int seconds = 10 ;
System.out.print("speed of light in 10 sec : \n"+speed_of_light*seconds) ;
}
}

както можете да видите, трябва да използваме ключовата дума implement за нашия интерфейс и нейният синтаксис е относително лесен

Забележка: интерфейсите могат да имат методи в jdk 1.8