본문 바로가기

클래스

(6)
[Kotlin] 클래스의 다형성 Drink 클래스와 이를 상속받은 Cola 클래스가 있다면 Cola의 인스턴스를 만들 때는 Drink의 내용을 담는 공간에 Cola의 내용을 담는 공간이 추가되어 생성된다. var a: Drink = Cola() Drink를 담는 변수에 저장하면 Drink의 기능만 사용하게 된다. → Up-Casting : 상위 자료형인 수퍼클래스로 변환 var b: Cola = Cola() *타입추론 기능으로 Cola 자료형은 생략 가능 Cola를 담는 변수에 저장하면 Cola의 기능까지 모두 사용할 수 있다. Down-Casting: Up-Casting된 인스턴스를 다시 하위 자료형으로 변환 다운캐스팅은 별도의 연산자 필요 - as : 변수를 호환되는 자료형으로 변환해주는 캐스팅 연산자 var a: Drink = C..
[Kotlin] 클래스의 상속 상속이 필요한 이유 1. 이미 존재하는 클래스를 확장하여 새로운 속성이나 함수를 추가한 클래스를 만들어야 할 때 2. 여러 개의 클래스를 만들었는데 클래스들의 공통점을 뽑아 코드 관리를 편하게 할 때 수퍼 클래스: 속성과 함수를 물려줌 서브 클래스: 속성과 함수를 물려받음 open: 클래스가 상속될 수 있도록 클래스 선언 시 붙여주는 키워드 (코틀린은 상속 금지가 기본값) 상속의 규칙 서브 클래스는 수퍼 클래스에 존재하는 속성과 같은 이름의 속성을 가질 수 없다. → 클래스의 자체 속성으로 만들어주는 var을 붙이지 말고 일반 파라미터로 받아 수퍼 클래스의 생성자에 직접 넘겨준다. 서브 클래스가 생성될 때는 반드시 수퍼클래스의 생성자까지 호출되어야 한다. fun main(){ var a = Animal(..
[Kotlin] 클래스의 생성자 생성자: 새로운 인스턴스를 만들기 위해 호출하는 특수한 함수 생성자의 기능? 인스턴스의 속성을 초기화, 인스턴스 생성 시 구문을 수행(init 함수를 통해) 기본 생성자(init 함수) : 파라미터나 반환형이 없는 특수한 함수. 생성자를 통해 인스턴스가 만들어질 때 호출 fun main() { var a = Person("박보영", 1990) // 1990년생 박보영님이 생성되었습니다. var b = Person("전정국", 1997) // 1997년생 전정국님이 생성되었습니다. var c = Person("장원영", 2004) // 2004년생 장원영님이 생성되었습니다. } class Person (var name:String, var birthYear:Int) { init { println("${th..
[Kotlin] 클래스의 기본 구조 클래스 : 고유의 특징값인 속성 + 기능을 구현한 함수 class Person (var name:String, var birthYear:Int) // 클래스 속성 클래스는 인스턴스를 만드는 틀 인스턴스 : 클래스를 이용해서 만들어내는 서로 다른 속성의 객체 fun main(){ var a = Person("박보영", 1990) var b = Person("전정국", 1997) var c = Person("장원영", 2004) } class Person (var name:String, var birthYear:Int) 인스턴스를 담은 변수 사용 변수명.속성명 fun main(){ var a = Person("박보영", 1990) var b = Person("전정국", 1997) var c = Person(..
[Javascript] 클래스(Class) 지금까지 비슷한 형태의 객체를 생성하기 위해 생성자 함수를 사용했었다. const User = function(name, age){ this.name = name; this.age = age; this.showName = function(){ console.log(this.name); }; }; const mike = new User("Mike", 30); 클래스로도 비슷한 형태의 객체를 만들 수 있다. 클래스는 ES6에 추가된 스펙이다. class User2 { constructor(name, age){ this.name = name; this.age = age; } showName(){ console.log(this.name); } } const tom = new User2("Tom", 10); cl..
[C++] OOP - 클래스(class) 객체 지향 프로그래밍을 수행하게 되면 데이터와 기능을 유기적으로 연결하기 위해 클래스(class)를 사용하게 된다. 추상화를 통해 원하는 객체를 class 키워드를 통해 사용자 정의타입으로 생성하며 struct와 구조가 같다. 구조체와 다른 점은 접근제어자가 추가되었고 함수를 포함할 수 있게 된 점이다. 클래스 선언 class 클래스명 { 접근제어자: 멤버 변수1; 멤버 변수2; ... 멤버 함수1; ... } C++은 3가지 접근제어자를 제공한다. ① private (디폴트) 객체의 멤버를 외부에 공개하지 않고 직접적으로 접근할 수 없게 한다. 동일 클래스 내에 있는 멤버 또는 friend 함수만 접근 가능하기 때문에 필요 시 public으로 선언된 메소드를 이용하여 기능을 수행한다. ② public ..