타입스크립트 클래스 추상 클래스 인터페이스

타입스크립트 클래스 추상 클래스 인터페이스

작성일 2023.07.13댓글 3건
    게시물 수정 , 삭제는 로그인 필요

타입스크립트를 공부 중인데 진짜 무슨 말인지 모르겠어요... 클래스(C++이나 자바를 배운 적이 없습니다,,)랑 인터페이스가 무엇인지 정확히 이해가 안 가는데 거기에 추상클래스까지 있고 클래스랑 인터페이스는 비슷해 보이고... 구글에 열심히 서치는 해보지만 설명글에 적힌 용어가 너무너무 어려워서 진짜 이해가 안 가요... 정말 정말 쉽게 이 3가지가 뭔지 설명해 줄 분이 필요합니다 ㅠㅠㅠㅠㅠ 


#타입스크립트 클래스 #타입스크립트 클래스 인터페이스 #타입스크립트 클래스 상속 #타입스크립트 클래스 선언 #타입스크립트 클래스 타입 #타입스크립트 클래스 제네릭

profile_image 익명 작성일 -

타입스크립트에서 클래스, 추상 클래스, 인터페이스는 객체 지향 프로그래밍의 개념을 구현하는 방법입니다. 각각의 개념을 쉽게 설명해드리겠습니다.

1. 클래스: 클래스는 객체를 생성하기 위한 템플릿입니다. 클래스는 속성(변수)과 메서드(함수)를 포함하며, 이를 이용하여 객체를 생성하고 사용할 수 있습니다. 예를 들어, 자동차 클래스는 속성으로는 색상, 모델, 가격 등을 가지고 있고, 메서드로는 주행, 정지, 가속 등을 가지고 있을 수 있습니다.

2. 추상 클래스: 추상 클래스는 일반적인 클래스와 비슷하지만, 직접적으로 객체를 생성할 수 없습니다. 추상 클래스는 다른 클래스에서 상속받아 사용되는 것을 목적으로 합니다. 추상 클래스는 추상 메서드를 포함할 수 있으며, 이는 하위 클래스에서 반드시 구현되어야 합니다. 추상 클래스는 일종의 설계 도면으로 사용되며, 구체적인 동작을 가지는 클래스를 만들기 위한 기반을 제공합니다.

3. 인터페이스: 인터페이스는 클래스가 구현해야 하는 속성과 메서드의 목록을 정의합니다. 인터페이스는 클래스 간의 상호작용을 정의하는데 사용됩니다. 예를 들어, 자동차 클래스와 비행기 클래스가 모두 운송 수단이라면, 인터페이스로 운송 수단을 정의하고, 자동차와 비행기 클래스가 이 인터페이스를 구현하도록 할 수 있습니다. 이렇게 함으로써, 운송 수단으로서의 공통된 동작을 보장할 수 있습니다.

요약하자면, 클래스는 객체를 생성하기 위한 템플릿이고, 추상 클래스는 클래스의 일종으로 직접적으로 객체를 생성할 수 없으며, 인터페이스는 클래스 간의 상호작용을 정의하는데 사용됩니다. 이러한 개념들은 객체 지향 프로그래밍의 다양한 기능을 구현하는데 도움을 주는 도구입니다.

profile_image 익명 작성일 -

타입스크립트에서 클래스, 추상 클래스, 인터페이스는 객체 지향 프로그래밍의 개념을 구현하는 방법입니다. 각각의 개념을 간단히 설명해 드리겠습니다.

1. 클래스(Class): 클래스는 객체를 생성하기 위한 설계도입니다. 클래스는 속성(변수)과 동작(메서드)을 가지며, 이를 이용하여 객체를 생성하고 사용할 수 있습니다. 예를 들어, 자동차 클래스는 속성으로는 차량 번호, 색상 등을 가지고, 동작으로는 주행, 정지 등을 가질 수 있습니다.

2. 추상 클래스(Abstract Class): 추상 클래스는 클래스의 일종으로, 객체를 직접 생성할 수 없습니다. 추상 클래스는 다른 클래스에서 상속받아 사용되는 것을 목적으로 합니다. 추상 클래스는 일반적으로 공통된 속성과 동작을 가지는 클래스들의 공통 부분을 정의하는데 사용됩니다. 예를 들어, 동물 클래스가 있을 때, 공통된 속성과 동작을 추상 클래스로 정의하고, 이를 상속받아 구체적인 동물 클래스(개, 고양이 등)를 만들 수 있습니다.

3. 인터페이스(Interface): 인터페이스는 클래스가 구현해야 하는 속성과 동작의 목록을 정의하는 것입니다. 인터페이스는 클래스의 형식을 정의하고, 해당 형식을 구현하는 클래스는 인터페이스의 모든 속성과 동작을 구현해야 합니다. 인터페이스는 다른 클래스 간의 상호작용을 정의하는데 사용됩니다. 예를 들어, 자동차 인터페이스는 주행, 정지 등의 동작을 정의하고, 이를 구현하는 클래스는 해당 동작을 구현해야 합니다.

간단히 말씀드리면, 클래스는 객체를 생성하기 위한 설계도, 추상 클래스는 공통된 속성과 동작을 가지는 클래스의 공통 부분을 정의하는 것, 인터페이스는 클래스가 구현해야 하는 속성과 동작의 목록을 정의하는 것입니다. 이해에 도움이 되셨길 바랍니다. 추가적인 질문이 있으시면 언제든지 물어보세요!

profile_image 익명 작성일 -

인터페이스 > 추상 클래스 > 클래스 순으로 복잡하다고 생각하시면 됩니다. 개념이 어렵다는 아니라, 구성하는 요소의 양 순서입니다. 그런데 공부할 먼저 이해해야 하는 것은 거꾸로 클래스입니다. 왜냐면 클래스를 통한 객체 지향을 제대로 공부하고, 상속이라는 것을 이해해야 추상 클래스와 인터페이스의 의의를 제대로 이해할 있기 때문입니다.

셋은 무척이나 비슷하여, C++ 같은 경우는 타입스크립트와 다르게 클래스 문법 하나로 인터페이스, 추상클래스, 클래스들을 모두 다룰 있습니다.

클래스부터 상속, 추상 클래스, 인터페이스를 하나의 답변으로 모두 정리하기엔 무리가 있습니다. 대략적인 틀을 적어드릴테니, 앞으로 공부하시는 참고해주세요

  1. 1. 추상 클래스, 인터페이스 모두 클래스를 확장적으로 사용하기 위해 만들어진 것이므로 클래스를 먼저 이해하셔야 합니다. 클래스는 객체들의 타입을 정의하는 시스템으로, 해당 객체가 가지고 있는 멤버 변수 (property) 메서드들을 정의할 있습니다. 객체를 생성할 수행할 작업들을 생성자(constructor) 명시하여, 단순히 값들을 설정하는 아닌, 입력된 매개변수들을 통해서 그때그때 적절한 값들을 저장할 있습니다.

  2. 예를 들어 사람을 정의하는 클래스 Person 있다고 칩시다. 클래스는 나이, 이름, 성별, 주민번호 등을 저장합니다. 이때 생성자는 나이, 이름, 성별, 주민번호를 모두 매개변수로 받을 수도 있지만, 주민번호가 성별과 나이에 대한 정보를 모두 가지고 있기 때문에 이름과 주민번호만 매개변수로 받아도 나이, 성별까지 알아내어 property 저장할 있는 거죠. 이게 생성자가 하는 일 중 하나입니다. 참고로 타입스크립트에는 없지만, C++ 같은 언어에는 객체가 소멸될 수행하는 작업을 정의하는소멸자라는 것도 있습니다.

  3. 2. 상속을 이해해야 합니다. 상속은 클래스에 있는 속성, 메서드들을 다른 클래스에서 물려받는 것으로, 반복적인 코드를 줄여줍니다. 예를 들어 남자와 여자는 사람이라는 공통점이 있지만, 작은 신체적인 차이점이 있기 때문에 성별이 구분되는 것이죠? 그런데 작은 차이 때문에 서로 다른 클래스를 개나 정의하기엔 코드가 너무 길어지고, 유지보수도 힘들어진다는 것입니다. 그래서 기본적인 Person이라는 클래스를 만들어 놓고, Person 상속받는 (다른 말로 Person 확장하는) Man, Woman이라는 클래스를 만들 있는 것입니다. 이러면 Person 가지고 있는 것을 Man, Woman 똑같이 갖게 되고, 각각의 고유한 속성, 메서드들도 따로 정의할 있습니다.

  4. 상속을 깊게 이해하려면 많은 것을 설명해야 하지만, 지금은 추상클래스와 인터페이스에 대한 이해를 위한 베이스만을 설명했습니다.

  5. 3. 추상 클래스는 그대로 추상적인 클래스 입니다. 속성이나 메서드를 추상적으로 정의하게 되면 그것을 추상 클래스라고 하고, 추상 클래스는 추상적이기 때문에 인스턴스를 생성할 없습니다. 이때 추상적으로 정의한다는 것은 앞으로 클래스/인터페이스를 상속받는 모든 클래스들은 속성과 메서드를반드시 가져야한다는 것을 명시만다는 것입니다.

  6. 인스턴스를 생성하지 못하면 필요하냐?? 추상 클래스는 추상 클래스를 상속 받는 다른 클래스를 통해서 사용됩니다.

  7. 예를 들어, Person 클래스가 가지고 있는 메서드에 앉기, 서기와 같은 행동을 지시하는 메서드들이 있다고 칩시다. 대부분의 사람이 똑같이 앉기, 서기를 비슷하게 수행하기 때문에 이는 Person 바로 정의해도 문제가 되지 않을 것입니다.

  8. 그런데 만약에 취미를 즐기는 수행시키는 메서드는 어떨까요? 취미와 특기는 사람마다 모두 다르기 때문에, Person 정의하는 것보다는 새로운 클래스를 만들어 그곳에 만드는 좋을 것입니다. 그런데 어쨌든 사람마다 취미가 뭐라도 있다는 것은 공통된 사항으로 보면, 사람마다 따로따로 정의하는 오히려 번거로울 있습니다.

  9. 이때 추상 클래스가 쓰이게 됩니다. 취미라는 것을 사람마다 갖고 있다는 것을 알려주긴 하지만, 실제로 무엇인지는 모릅니다. 그래서 추상적인 것이고, 추상적인 상태로는 인스턴스를 생성할 없는 거에요.

  10. 그리고 추상 클래스를 상속하면서 실제로 취미가 무엇인지 정의하면, 사람 구실을 시킬 있다는 뜻입니다. 좀 극단적인 예시 같긴 하네요.. 개념 이해하는 도구로만 사용해주세요.

  11. 4. 인터페이스는 추상 클래스와 역할은 비슷하지만, 훨씬 추상적입니다. 추상 클래스는 필요한 부분만 추상적으로 정의하지만 인터페이스는 모든 속성과 메서드들을 추상적으로 정의해요. 그래서 코드도 훨씬 간결해집니다.

  12. 타입스크립트에서는 메서드가 없거나, 굳이 생성자가 필요하지 않은 간단한 객체를 다룰 때 인터페이스를 그저 타입 선언용으로 사용하기도 합니다.

  13. 인터페이스나 추상 클래스를 매개변수 타입으로 설정하면 그것을 확장하는 다른 클래스들을 수용할 수 있는 메서드를 정의할 수 있기도 합니다.

상속이 원래 잘 활용한다면 굉장히 유용한 문법입니다. 객체 지향 개념들을 하나씩 공부해보시면 금방 쉽게 이해하실 수 있을 거에요.

오해하실까봐 말씀드리자면, 사실 예시로 든 사람과 취미 이런 구조는 상속을 통한 오버라이딩으로 구현하기엔 무리가 있을 것 같습니다. 정말 사람마다 취미가 전부 제각각이니까요.

이런 건 보통 취미를 다루는 클래스를 정의하고 그 취미 객체를 Person에 포함시키는 구조를 따릅니다. 이걸 has-a 관계라고 합니다.

추가로 위에서 말한 클래스/인터페이스를 상속받는 다른 클래스를 포괄적으로 수용하도록 매개변수를 선언하는 것도 is-a 관계를 활용한 것이라고도 할 수 있겠네요.

자바 추상클래스 ,인터페이스 질문...

... B라는 인터페이스가 있고, public abstract class A... 붙여서 추상클래스로 만들어주면' 모든 클래스를... 호출 타입을 선택하면 됩니다. A 클래스를 상속받는...

c++ 추상클래스에 대해서

... print라는 인터페이스를 정의한 추상 클래스다. 하지만 이 클래스는 차후의... 또한 함수의 리턴타입으로 사용될 수 없습니다. 3. 그러나 임시 객체(temporary...

추상클래스,인터페이스 질문

... Animal arr[] = new Animal[5]; arr[0] = new Dog(...) arr[1] = new Cat(...) arr[2] = new Cat(...) ... 이런 식으로 배열의 각 원소를 랜덤한 타입의 객체로 할당하라는 뜻 같네요..

인터페이스를 일반 클래스추상...

... 리턴 타입이 없으며, 문자열을 출력합니다. ========== 이런 것이 일반 메소드... 클래스, 추상클래스 , 인터페이스의 예를 간단하게 살펴보았습니다. 일반클래스는.....

[java]인터페이스추상클래스의...

... 그 인터페이스 타입으로 사용될수 있다는 것을 컴파일러에게 알려주고 실행시간에 호출 되는 것이고 추상클래스는 실행시간에 동적으로 호출 된다는 것입니다. 답변이...

자바에서 추상클래스

추상클래스에서 변수선언은되는데 객체생성은안되요?... 그럼 인터페이스는 변수선언 객체생성... 의 경우에는 변수를 선언하였지만 값은 null입니다 클래스 타입의...