분류 전체보기 (40) 썸네일형 리스트형 [Redux] redux state undefined 에러 해결하기(feat. hoisting) 이번에 redux와 vanilla-Js 만을 사용해 counter 앱을 만들어보는 과정에서 발생한 에러를 포스트로 남겨두려고 한다. 에러 내용 Uncaught TypeError: Cannot read properties of undefined (reading 'toggle') 다음 에러는 "toggle을 읽으려는데 undefined의 프로퍼티는 읽을 수 없어요!"라고 말하고 있다. 밑에 코드를 기술할 테지만 먼저 index.js의 55줄을 보면 다음과 같은 코드에서 에러가 난 것이다. if (state.toggle) { //state.toggle을 읽어오는 과정에서 에러 발생 divToggle.classList.add("active"); } else { divToggle.classList.remove(".. [JAVA]중첩 클래스의 개념과 멤버, 로컬 클래스 객체 지향 프로그램에서는 클래스들 간에 서로 긴밀한 관계를 맺고 상호작용을 한다. 어떤 클래스는 여러 클래스와 관계를 맺고 어떤 클래스는 특정 클래스와만 관계를 맺는다. 이 때 특정 클래스하고만 관계를 맺는 경우 클래스를 클래스안에 넣어주는 것이 좋다. 왜 좋을까? 두 클래스의 멤버들을 서로 쉽게 접근 가능하다. 외부에 불필요한 클래스를 감추어 코드를 간결하게 한다. 이렇게 클래스안에 클래스가 들어가는 경우를 중첩 클래스라고 한다. class ClassEx1 { class ClassEx2 {//ClassEx2는 중첩 클래스이다. } }중첩 클래스는 클래스 내부에 선언되는 위치에 따라 두 가지로 분류 된다. 멤버 클래스 클래스의 멤버로서 선언됨 클래스나 객체가 사용 중이라면 언제든지 재 사용 가능 인스턴스.. [JAVA]인터페이스(interface) 뽀개기 자바에서 말하는 인터페이스는 객체의 사용 방법을 정의한 타입이다. 인터페이스는 객체의 교환을 통해 다형성을 구현하는데 매우 중요한 역할을 한다. 이런 인터페이스는 어떤 역할을 할까? 약간 비유해보자면 인터페이스는 일종의 규격, 양식이라고 할 수 있다. 규격과 양식이 그렇다면 어떤 힘을 가지고 있는지 생각해보자. 예를 들어 학교에서 산불예방 포스터 그리기 대회 공지가 나왔다. 그 공지에는 이렇게 쓰여있었다. 산불예방 포스터 그리기 대회 산불 예방의 의미가 들어간 포스터를 제작해 제출하시면 됩니다. 기간 : 8월 8일까지 이 대회 공지를 본 학생 A, B, C는 각각 다음과 같이 행동했다. A는 A4용지에 포스터를 그려서 8월 5일에 제출했다. B는 B4용지에 포스터를 그려서 컬러로 복사해 8월 7일에 제출.. [JAVA]추상 클래스의 개념과 abstract 키워드 사전적 의미로 추상은 실체 간에 공통되는 특성을 추출한 것을 말한다. 예를 들어 새, 물고기, 곤충 등의 실체에서 공통되는 특성을 추출해보면 동물이라는 결과가 나온다. 추상 클래스도 다음과 같이 생각해서 접근하면 된다. 우선, 객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다. 그리고 여러 실체 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상 클래스라고 한다. 이러한 특성 때문에 추상 클래스와 실체 클래스는 상속의 관계를 가지고 있다. 예를 들어 새 클래스, 곤충 클래스, 물고기 클래스라는 실체 클래스가 있다고 해보자. 이 클래스들에서 공통된 필드와 메소드들을 모아서 따로 동물 클래스를 만들었다고 하면 동물 클래스는 새, 곤충, 물고기 클래스의 추상 클래스가 되고 상속 관계에 놓인다. .. [JAVA]메소드 오버라이딩(Overriding) 부모 클래스의 모든 필드와 메소드가 자식 메소드에게 맞게 설계되어 있다면 이상적이지만, 그렇지 않은 경우가 있다. 자식 클래스가 보았을 때 부모 클래스에서 상속받은 메소드가 적합하지 않다면 자식 클래스에서 이를 수정해서 사용한다. 마치 부모님의 유전자를 상속받아 자식이 나왔는데 자식이 자신의 얼굴이 마음에 들지 않아 성형 수술을 해 인위적으로 신체 일부를 바꾼 경우를 예로 들 수 있다. 자바는 이러한 경우를 위해 오버라이딩 기능을 제공한다. 메소드 재정의(Override) 메소드 오버라이딩은 자식 클래스에서 적합하지 않은 부모 클래스의 특정 메소드가 있다면 동일한 메소드를 재정의해서 수정하는 것을 의미한다. 메소드가 오버라이딩 되면 동일 이름의 부모 객체의 메소드는 숨겨진다. class Parent { .. [JAVA]super()의 이해와 활용 자식이 부모가 없을 수 있을까? 그것은 불가능하다. 현실 세계에서도 부모 없는 자식은 없다. 자바에서도 똑같다. 자바에서 자식 클래스를 객체로 만들어 생성하면 자동적으로 부모 객체가 먼저 생성되고 자식 객체가 그 다음에 생성된다. 예를 들어 경찰이라는 객체를 생성한다고 하면 사람이라는 부모 객체를 생성한 다음 사람을 상속 받어 경찰이라는 객체가 생기게 된다. 모든 객체들은 클래스의 생성자를 호출해야만 생성된다. 자식 객체와 부모 객체 모두 마찬가지이다. 그렇다면 자식 객체를 만들었을 때 부모 객체의 생성자는 어떻게 호출이 될 것인가? 이 때문에 super()가 사용된다. 부모 생성자는 자식 객체의 생성자에서 호출된다. 부모 클래스가ParentClass, 자식 클래스가 ChildClass라고 해보자. 개발.. [JAVA]클래스 상속 프로그램에서는 자식(하위)이 상속받을 부모(상위)를 선택한다. 자식 클래스를 선언할 때는 어떤 부모 클래스를 상속받을 것인지 결정하고 이를 extend 뒤에 기술하면 된다. class Childclass extend Parentclass { //필드, 생성자, 메소드 } 예를 들어 Car 클래스를 상속해서 SportCar 클래스를 만들려면 다음과 같이 작성하면 된다. class SportsCar extends Car { } 자바에서는 여러 부모를 상속하는 다중 상속이 허용되지 않는다. 따라서 extend 뒤에는 반드시 단 하나의 부모 클래스만 와야 한다. 다음 예제로 클래스 상속에 대해 정리해보자. CellPhone.java(부모 클래스) public class CellPhone { //CellPhone.. [JAVA]상속(Inheritance)의 개념 현실에서 말하는 상속은 부모가 자식에게 무언가를 물려주는 행위를 말한다. 자식들은 상속을 통해 상속받은 것을 이용할 수 이용할 수 있게 된다. 객체 지향 프로그램에서는 이 상속 개념을 활용한다. 부모 클래스의 멤버를 자식 클래스에 물려주어 자식 클래스에서 부모 클래스의 멤버를 사용할 수 있게 한다. 부모 클래스와 자식 클래스는 각각 상위 클래스와 하위 클래스라고 부르기도 한다. 예를 들어 부모 클래스에 메소드 1, 필드 2가 있고 자식 클래스에 메소드 4, 필드 5가 있다고 해보자. 이렇게 되면 자식 클래스에서는 메소드 4, 필드 5 뿐만 아니라 부모 클래스로부터 메소드 1과 필드 2를 물려받기 때문에 메소드 1과 필드 2를 자식 클래스에서 사용 가능하다. 상속의 활용 상속은 대체적으로 이미 만들어진 완.. 이전 1 2 3 4 5 다음