Class
- 객체가 모여있는 컨테이너
class a { //객체가 모여있는 컨테이너
name;
age; //Field : 데이터
Speak(); // Method : 메소드(행동)
}
//데이터만 들어있는 Class는 데이터 Class라고 함.
class | object | |||||
-template | -instance of a class | |||||
-declare once | -created many times | |||||
-no data in | -data in | |||||
제조법 | 제조법으로 제조된 물건 |
Class선언
class person {
constructor(name, age){
this.name = name;
this.age = age; //field
}
speak(){
console.log(`${this.name}:hello!!`);
//여기서 name는 생성된 object이다.
}
//object
const 길동 = new person('길동', 20);
console.log(길동.name); //=>출력물 : 길동
console.log(길동.age); //=> 출력물 : 20
길동.speak() //=> 출력물 : 길동:hollo!!
Class선언2
Class user {
constructor(firstName, lastName, age){
this.firstName = firstName;
this.lastName = lastName;
this.age = age;}
get age(){
return this.age; //불러오기
set age(value){
// this.age = value;
// 두 age의 이름이 같으면 fields -> setage -> value -> setgae의 무한 반복 그래서 아래처럼 _를 넣어줌
// getter도 마찬기로
//java에서는 메소드 자체가 set, get가 붙기 때문에 괜찮음.
if(value < 0){
throw Error("나이는 0 미만이 될 수 없습니다");
}
this_age=values;
//또는
this._age = values < 0 ? 0:value;
}
}
}
상속과 다향성
//사각형, 세모, 동그라미가 있다고 할 때. 이를 표현해주기 위해서
//shape(도형)이라는 클래스를 선언한다.
Class Shape {
constructor(width, height, color){
this.width = width;
this.height = height;
this.color = color;
droaw(){
console.log(`drawing ${this.color} color of`);
}
getArea(){
return this.width * this.height;
}
}
//extends : 연장 Shape를 상속받음.
class Rectangle extends Shape{}
class Triangle extends Shape{
draw(){
console.log("삼각형");
//이렇게 하면 drawing red color of가 출력되지 않는다 때문에 super를 사용
super.draw();
}
getArea(){
return (this.width * this.height;) / 2;
//overrding(오버라이딩 : 부모의 메소드를 필요한 것만 재정의 하여 사용할 수 있다)
}}
const rectangle = new Rectangle(20, 20, 'blue');
rectangle.draw(); //출력물 => drawing blue color of\
console.log(rectangle.getArea()); //출력물 => 400
const triangle = new Triangle(20, 20, 'red');
triangle,draw(); // 출력물 => drawing red color of
// console.log(triangle.getArea());
// 출력물 => 400 삼각형은 2를 나눠야 함으로 다향성을 이용한다. super.draw(); 이다
//그럼 최종 출력물은 '삼각형'과 (super을 아래에 선언했기 때문에) 200이 된다.
instanceOf
- Class를 이용해서 만들어진 인스턴스인 아닌지를 판별
console.log(rectangle instanceOf Rectangle); -true rectangle =new Rectangle
console.log(triangle instanceOf Rectangle); -fales triangle은 Rectangle을 이용하여 만들어지지 않음
console.log(triangle instanceOf Triangle); -true triangle = new Triangle
console.log(triangle instanceOf Shape); -true triangle = new Triangle 이고 Triangle extends Sgape
console.log(triangle instanceOf Object); -true javaScript에서 만든 모든 Object는 모두 Object를 상속 받은 것.
'하루정리' 카테고리의 다른 글
2022.09.06 Function과 ArrowFunction (0) | 2022.09.07 |
---|---|
2022.09.06 Model, ModelMap 과 modelAndView (0) | 2022.09.06 |
222.09.01 JavaScript (0) | 2022.09.01 |
2022.08.30 JSTL 태그 라이브러리 core (0) | 2022.08.30 |
2022.08.29 include file / include page (0) | 2022.08.29 |