클래스란?
class 사람 {
나이: ;
성별: ;
인사 () {
안녕하세요..
}
}
클래스는 속성을 나타내는 필드와, 행위를 나타내는 메소드로 구성된다.
객체란?
인스턴스란?
객체 vs 인스턴스
상속
객체지향에서 상속이란 어떤 클래스보다 좀 더 확장된 기능을 구현하고 싶을 때 새로 클래스를 구현하지 않고, 기존의 클래스를 상속받아서 속성이나 기능을 확장시키는 것을 말한다.
다형성
다형성이란 하나의 객체가 여러 가지 타입을 가질 수 있다는 것을 의미한다.
예를 들어 상속을 이용한다면, 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 할 수 있다.
오버로딩(Overloading) vs 오버라이딩(Overriding)
class OverloadingTest{
cat(){
console.log("매개변수 없음");
}
cat(int a, int b){
console.log("매개변수 :"+a+", "+b);
}
cat(String c){
console.log("매개변수 : "+ c);
}
}
출처: https://private.tistory.com/25 [공부해서 남 주자]
오버라이딩: 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의 해서 사용하는 방법
class Woman{
constructor() {
this.name;
this.age;
}
info(){
console.log("여자의 이름은 "+name+", 나이는 "+age+"살입니다.");
}
}
class Job extends Woman{
constructor() {
this.job;
}
info() {
super.info();
console.log("여자의 직업은 "+job+"입니다.");
}
}
출처: https://private.tistory.com/25 [공부해서 남 주자]
this vs super
this란 현재 클래스의 인스턴스를 의미하고, super란 상위 클래스의 인스턴스를 의미한다.
자바스크립트는 오브젝트를 이용하여 객체를 표현할 수 있다.
const person = {
name: '곽성준',
Age: 24,
info() {
console.log('이름: ' + this.name + '나이: ' + this.age);
},
};
person.info();
class가 생기고 class에서 제공하는 constructor라는 생성자가 주어짐.
class를 new로 호출하면 생성자가 실행되고, 인스턴스를 반환한다.
하지만 class는 prototype을 내부적으로 사용하고 있다.
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
info() {
console.log('이름: ' + this.name + '나이: ' + this.age);
}
}
const person = new Person('곽성준', 24);
person.info();
function을 new 키워드로 호출하면 그 함수는 constructor가 된다.
const Person = function(name, age) {
this.name = name;
this.age = age
this.info() = function {
console.log('이름: ' + this.name + '나이: ' + this.age);
}
}
const person = new Person('곽성준', 24);
person.info();
constructor 패턴과 유사하나, 메서드를 prototype객체에 보관해서 메모리 효율성에서 유리하다.
function Person() {}
function Person() {}
const joon = new Person();
const jisoo = new Person();
function Person() {}
const joon = new Person();
const jisoo = new Person();
Person.prototype.getType = function () {
return '인간';
};
console.log(joon.getType()); //인간
console.log(jisoo.getType()); //인간
joon.getType = function () {
return '사람';
};
console.log(joon.getType()); //사람
console.log(jisoo.getType()); //인간
jisso.age = 25;
console.log(joon.age); // undefined
console.log(jisoo.age); // 25