# JavaScript Class kavramı

ES6 ile hayatımıza giren diger bir kavramda class olmuştur daha oncesinde ES5 ile functionlar kullanılırdı her bir dosya function oluyordu bunun yerine artık Class lar var her ne kadar diger dillerdeki sınıf kavramına benzesede farklılıkları tabiki mevcut syntax ise şöyle :

```
class User
{
       constructor(_name,_surname){ 
        this.name=_name;
         this.surname=_surname;        }

 info=()=>{  console.log(this.name +" "+this.surname );  }
}
let perp=new User("Hilal","Yıldız");
``` 
>class parametre alamayacak olsa dahi constructor tanımlanmalıdır.Bu zorunluluk degildir tanımlanmadıgı takdirde default olarak constructor atanacaktır ama tavsiye edilen tanımlanması yönündedir

## Classlarda Kalıtım 
Kod tekrarını engellemek amaçlı bir sınıfın özellikleri diger bir sınıfa aktarılabilir

```
class User { constructor(_name="Hilal"){ this.name=_name; } }
class Hilal extends User 
{    constructor(_surname)
     { 
            super(name)
            this.surname=_surname;
        }
    info=()=>{  return this.name+" "+this.surname ; }
}
let prinT=new Hilal("Hilal","Yıldız");
prinT.info();
``` 
> super adlı metot kalıtım alınan sınıfı işaret eder ve üst sınıftan parametrelerini kullanmamızı saglar

>Kalıtım alınan class içinden  fonksiyoun kullanılmak istenirs yine **this.method_adi** şeklinde yazılmalıdır



```
Class jack extend user 
{
 Konus() { super.speak() ; }
//Kalıtım alınan user isimli classda bulunan speak() adlı metot cagrıldı
}
``` 

