일단 질문에 앞서 코틀린에 대한 개념이 하나도 없다라는 점 이해해주시길 바라면서 강의 내용을 보다가 패키지나 클래스 파일 생성하는 방식이 너무 독특해서 질문을 하지 않을수가 없더라구요 클래스파일을 생성하면 패키지 경로가 생성되고 디렉터리 구조를 패키지 경로에 맞춰서 생성하는걸 당연하게 생각해왔었는데, View.kt를 예로 View와 관련된 클래스들을 내부에 생성하시는걸 보고 독특하다는 생각이 들었습니다. 예제를 기반으로 한 강의다보니 변수들의 개수가 적은것도있고, 강의 내용에 별로 중요한 부분이 아니라서 이런 방식을 채택하시는건지 아니면 실무에서도 이런 방식으로 개발을 하시는건지, 실무에서 사용하신다면 팀원들과의 협업에 문제가 없었는지 궁금합니다! 순수하게 궁금해서 질문드려욥ㅠ
메서드나 함수 안에서 선언해서 사용하는 변수를 지역변수라 칭하는데, 마찬가지로 메서드 안에 클래스 인스턴스를 생성해서 사용할 경우 해당 객체는 뭐라고 부르나요?(메서드 안에서 클래스를 선언하는 지역클래스 말고요.) 예로는 void methodA () { int i = 0; ClassA m = new ClassA() m.a = i; } 대충 이런 식의 코드일 때 변수 i를 methodA의 지역변수라 하고 객체 m은 어떻게 불러야 할까요
impolements러 interface를 받아 class를 만들때 private이 안되는 오류를 보여주셨는데요 interface를 사용하지 않고 그냥 class안에서 type을 지정하는 방법, abstract class를 이용하는 방법 모두 이해됬습니다. 하지만 interface를 사용하면 private, protected 사용이 불가한 것인지 잘 모르겠어서 질문을 올립니다. 구글링해본결과 class내에 속성으로 만들고 getter, setter를 이용하는 것으로 우회하는 방법을 사용하더라구요. ( https://stackoverflow.com/questions/37791947/how-to-define-a-private-property-when-implementing-an-interface-in-typescript ) 이렇게 했을 때 private의 기능인 class 밖에서는 호출 할 수 없다고 위반되는 결과가 나옵니다. 어떤식으로 해결 해야 할까요? interface Interface { readonly a: string; b: number; } class TSClass implements Interface { private readonly _a: string = "init"; get a() { return this._a; } protected _b: number = 1; get b() { return this._b; } set b(v: number) { this._b = v; } c: string = "기본값이 public"; method() { console.log(this._a); console.log(this._b); console.log(this.c); } } class inheritClass extends TSClass { method() { console.log(this._a); // error console.log(this.a); // 가능.. console.log(this._b); console.log(this.b); console.log(this.c); } } new inheritClass()._a; // error new inheritClass().a; // 가능... new inheritClass()._b; // error new inheritClass().b; // 가능.. new inheritClass().c;
섹션4 - float 강의 (18:03 ~ 18:35 index5) box3 관련 질문입니다! style 태그에는 div 의 자식 요소로서 box3 클래스가 정의되어 있는데요. body 태그에서는 div 가 아닌 span 태그를 쓰면서 div 의 클래스인 box3를 쓴 것으로 확인됩니다! 이 경우에, style 태그에서 클래스를 정의할 때, div 태그의 역할이 무엇인지 궁금합니다! style 태그에서 span태그의 자식 요소로 box3 클래스를 정의해야, body 태그에서 span태그로 클래스를 적용할 수 있는게 아닌가 헷갈리네요!!ㅎㅎ
interface A { readonly a: string; b: string; } class B implements A { a: string = '123'; // OK b: string = 'world'; } const b: B = new B(); b.a = '456'; // OK console.log(b); // { a: '456', b: 'world' } 인터페이스 A에서 변수 a는 readonly 키워드가 붙어있는데 이를 구현한 클래스 B에서 readonly 키워드를 붙여주지 않아도 에러가 발생하지 않는 이유가 궁금합니다.
안녕하세요, 판교님 질문있어서 들어왔습니다. JS가 그 동안 역사적으로 OOP를 구현하기 위해서 여러가지 시도를 많이 한 것 같습니다. 판교님 코드를 보니 다시 한번 이해가 되었는데요, ES5에서 많이 했었던 모듈패턴의 IIFE패턴을 소개해 주셨는데, 이번에 MDN사이트가 개편됐습니다, 확인이 늦어서 그런지 모르겠네요. 아무튼 판교님께서 소개해주신 IIFE 코드가 있었고, 더 아래에 생성자 함수를 통해서 reactivity 를 구현하려는 코드가 더 있더라구요 , 그래서 이제 판교님 생각에 둘의 어떤 특별한 차이가 있는지 궁금했습니다, 깊게 생각하지 않지만, 판교님께서는 이러한 부분에 대해서 어떻게 생각하시는지 궁금합니다.
바닐라 JS로 작성하는 강의 코드 중에서 질문 있습니다. Q1) class 안의 모든 메소드들에 return this;를 해주셨는데요. show() 와 hide() 같은 경우, 이미 원하는 값을 변경해줬는데... 구지 return 값을 따로 줘야하는 이유가 있나요?? Q2) return this; 가 메소드에서 어떤 의미를 가지는지 궁금합니다. Q3) DOM API를 랩핑하셨는데, 랩핑은 외부 라이브러리의 코드가 변경되더라도, 내부 코드에 영향을 주지 않기 위해서 하는 것이라고 알고 있는데요. DOM API가 변경될 가능성은 거의 없는 것같은데, 랩핑을 하신 이유가 있는지요?? Q4) 현업에서는 그냥 모든 외부 라이브러리를 예외없이 랩핑해서 사용하나요??
배열로 만들어서 주소를 한번 확인해봤습니다. 근데 int는 4바이트이고 double은 8바이트인데 주소로는 16바이트의 차이가 났습니다. int랑 int로 했을때는 정상적으로 8이 되었는데 왜 이렇게 되는지 궁금합니다. 혹시 x+1이런방식이 아니고 다른 방식으로 해야 되는건지 궁금합니다