extends
class User {
x=10;
}
class NewUser extends User {}
let 사람 = new NewUser();
//사람 --> {x:10}
private
와 비슷합니다. {}안에서만 사용가능
하지만 private
과 다르게 protected
는 extends 된 class 안에서도 사용가능
private
class User {
private x= 10;
}
class New extends User{
//x 사용불가
}
--------------------------------
protected
class User {
protected x= 10;
}
class New extends User{
doThis(){
this.x=20;
}
}
let me = new New();
console.log(me); //New{x: 10}
me.doThis();
console.log(me); //New{x: 20}
protected : extends된 class는 사용가능, 자식들 사용불가능
private: extends된 class 사용불가능, 자식들 사용불가능
우리가 class { }
안에 집어넣는 변수, 함수 이런건 전부 class로 부터 새로 생성되는 object, 일명 instance
에 부여됩니다.
근데 부모 class에 직접 변수나 함수를 부여하고 싶으면 static
키워드를 왼쪽에 붙이자.
자식들은 물려받지못하고, 부모만 쓸수잇게!!
👇기본 class문법에선👇
class User {
x = 10;
y = 20;
}
let john = new User();
john.x =====> 가능
User.x =====>불가능
👇static을 사용하면👇
class User {
static x = 10;
y = 20;
}
let john = new User();
john.x //불가능
User.x //가능
-----------------------------------------
- 😻함수도 static 붙이기 가능😻
- 😻extends 로 class를 복사할 경우 static 붙은 것들도 따라옵니다. 😻
class User {
static x = 10;
y = 20;
}
class Hey extends User {
z = 10;
}
let hey = new Hey();
console.log(Hey.x); //10
- static은 private, protected, public 키워드와 동시 사용가능합니다.
class User {
static skill = 'js';
intro = User.skill + '전문가입니다'
}
var 철수 = new User();
console.log(철수); //{intro:'js전문가입니다'}
User.skill = 'python';
var 민수 = new User();
console.log(민수); //{intro:'python전문가입니다'}
1번 - x, y, z 속성의 특징을 설명해보십시오.
class User {
private static x = 10;
public static y = 20;
protected z = 30;
}
1. 필드값은 원래는 모든 User의 자식들에게 물려주는 속성이지만
x와 y에는 static 키워드가 붙었기 때문에 User.x 이런 식으로만
접근해서 쓸 수 있습니다.
User의 자식들은 x와 y를 쓸 수 없습니다.
2. private static x는 class 내부에서만 수정가능합니다.
3. public static y는 class 내부 외부 상관없이 수정가능합니다.
public 키워드 지워도 똑같이 동작할 듯
4. protected z는 private와 유사하게 class 내부에서만 사용이 가능한데
extends로 복사한 class 내부에서도 사용할 수 있습니다.
2번 - x 속성에 숫자를 더해주는 함수가 필요합니다.
class User {
private static x = 10;
public static y = 20;
}
User.addOne(3) //이렇게 하면 x가 3 더해져야함
User.addOne(4) //이렇게 하면 x가 4 더해져야함
------------------
해설
class User {
private static x = 10;
public static y = 20;
static addOne(파라미터 :number){
User.x += 파라미터
}
static printX(){
console.log(User.x)
}
}
User.addOne(3)
User.addOne(10)
User.printX()