
포스팅에 앞서 내용이 틀릴 수 있습니다. 해당 부분 지적 감사히 받습니다. 인터페이스의 다중 구현이다. 원래 자바는 다중 상속을 허용하지 않는다. 그렇다면 인터페이스는 어떻게 다중 구현을 허용할 수 있는 것일까? 이는 메모리관점에서 접근하면 쉽게 이해할 수 있다. 일단 자바에서는 상속을 받은 객체 생성 시 힙영역에 자식과, 연결된 모든 부모의 참조를 힙영역에 적재하게 된다. 하지만 과거에 배웠던 것 중, 오버라이딩된 메서드는 항상 실행 우선권을 가진다고 배웠었다. 이를 통해 인터페이스는 다중 구현을 허용할 수 있는 것이다. 조금 더 자세히 알아보자. 일단 인터페이스에는 기본적으로 기능을 가진 메서드를 구현할 수 없다. 이 인터페이스를 구현한 자식 Class에서는 반드시 메서드 오버라이딩을 진행해야 했기 ..

포스팅에 앞서 내용이 틀릴 수 있습니다. 해당 부분 지적 감사히 받습니다. 자바의 인터페이스에 대해 알아보자. 먼저 인터페이스는 추상 클래스의 모든 메서드가 추상 메서드일 때 사용하면 된다. 사용하는 방법은 파일 생성 시, Class가 아니라 Interface로 생성하여야 한다. 아래 이유를 통해 왜 그런지 알아보자. 인터페이스의 성질 1. 인터페이스의 인스턴스는 생성할 수 없다.2. 상속 시 모든 메서드를 오버라이딩 시켜야 한다.3. 자식에서 여러 개의 인터페이스를 상속받을 수 있다. 원래 자바에서의 상속은 부모를 1명만 둘 수 있었다. 인터페이스를 통하면 여러 명의 부모를 상속받을 수 있다. 이것이 인터페이스의 가장 큰 특징이다. 그렇다면 인터페이스에 대해 조금 더 구체적인 특징에 대해 알아보자...
포스팅에 앞서 내용이 틀릴 수 있습니다. 해당 부분 지적 감사히 받습니다. 오늘은 마음 편히 강의를 보고 싶어 연차를 냈다. 그럼 시작해보자. 이전 시간에 다형성에 대해서 배웠다. 부모 Class를 물려받은 자식 Class는 메서드 오버라이딩을 통해 자식에게 맞는 메서드로 재구현 후 실행하게 된다. 이 과정에서 개발자가 새로운 자식 Class를 만들었지만, 메서드 오버라이딩을 구현하지 않을 실수를 할 수도 있다. 또한, 부모의 역할로 자식들이 공통으로만 사용될 수 있는 요소만 제공하는 부모라면, Main Class에서 인스턴스를 생성할 필요도 없다. 이를 위해 우리는 추상 클래스(Abstract Class)를 사용할 수 있다. 추상 클래스의 역할을 알아보자. 1. 추상 클래스의 추상 메서드는 자식에서 ..
포스팅에 앞서 내용이 틀릴 수 있습니다. 해당 부분 지적 감사히 받습니다. 자바 다형성이다. 다형성이란 뭘까? 다형성(Polymorphism) : 하나의 객체가 다른 타입으로 사용될 수 있다. 다형성이 필요한 예시부터 먼저 이야기해 보자. 자동차라는 부모 Class가 있다. 자동차의 소분에는 경차, 소/중/대, 화물 등등 많은 종류로 다시 분류될 수 있다. 만약 자동차를 관리하는 프로그램이 있었는데, 새로운 자동차 종류가 나왔다고 해보자. 그러면 기존 상속에서는 메인 Class에서 새로운 자동차 종류 객체를 다루는 데 있어서 굉장히 많은 코드 수정이 필요하다. 이를 클린 하게 만들 수 있게 하는 게 다형성이다. 다형성의 특징 2가지에 대해 알아보자. 1. 다형적 참조 : 부모타입의 변수가 자식 인스턴스를..
포스팅에 앞서 내용이 틀릴 수 있습니다. 해당 부분 지적 감사히 받습니다. 드디어 기다리던 상속 파트이다. 자바에서 굉장히 중요한 부분이다. 한번 상속에 대해 알아보자. 상속이란 Class의 요소를 서로 공유할 수 있게 해주는 작업이다. 다만 아래에서 위로의 참조만 가능하다. 즉, 자식만이 부모의 요소에 접근이 가능한 것이다. 이유는 자바의 메모리 영역에서 배운 기초를 생각해 보면 설명이 가능하다. 그래도 설명해 보자면, 자식 Class에서는 extends 키워드를 통해 부모의 정보를 알고 있지만, 부모 Class에는 자식에 대한 정보가 없기 때문에, 참조값에 대한 정보가 없기 때문이다. ( 근데 참조값 넣어주면 될 수도 있지 않나란 궁금증이 생겼지만, 그건 상속관계보단 메모리 직접 참조이기 때문에 나중..
포스팅에 앞서 내용이 틀릴 수 있습니다. 해당 부분 지적 감사히 받습니다. 프로그래밍에서는 초기값이 설정되면 바꿀 필요, 혹은 바꿔서는 안 되는 값이 존재한다. 자바에서는 이럴 경우 final을 사용한다. final에 대해 알아보자. final은 최초 1회만 값을 정해줄 수 있다. class 즉 static 변수 생성 시, 초기값을 할당해주지않으면 0으로 세팅되었다. 하지만 final 변수는 초기값이 한번 설정되고 난 이후에 수정이 불가능하기에, 그냥 final int count ; 형식으로 선언하면 컴파일 오류가 난다. 0을 고정값으로 쓰고싶으면 final int count = 0; 으로 작성해 주면 된다. 또한 관례상 final 변수는 COUNT_NUMBER와 같이 모두 대문자로 작성해주며, 단어 간..

포스팅에 앞서 내용이 틀릴 수 있습니다. 해당 부분 지적 감사히 받습니다. static에 대해 자세히 알아보자. 저번 시간에 static이 붙은 요소들은 객체 생성 시 힙영역이 아니라 메서드 영역의 메모리가 관리된다고 배웠었다. 우리는 다른 클래스의 요소를 가져다 쓰기 위해 객체를 항상 생성했었다. 그런데 객체를 생성하면 힙 영역에 들어간다고 하지 않았나? 자 그러면 어느 시점에 다른 class의 static 변수가 메서드 영역에 적재될까? 바로 해당 class를 참조하는 시점부터 적재된다. 아래 예시 코드를 보면 된다. static2 Classpublic class static2 { static int a = 1;} static1 Classpublic class static1 { public..
포스팅에 앞서 내용이 틀릴 수 있습니다. 해당 부분 지적 감사히 받습니다. 이번에는 자바의 원리에 대해 조금 더 알아보자. 자바는 프로그램 실행 시 메모리 관리를 어떻게 할까? 프로그램 실행 시, 자바의 각 요소들의 메모리 공간은 분리되어 관리된다. 이를 통해 자바는 굉장히 효율적이게 메모리를 관리하여 원활한 프로그램을 구동할 수 있도록 돕는다. 자바의 메모리 관리 영역은 3가지가 있다. 메서드 영역스택 영역힙 영역각 영역에 어떤 요소들이 관리되는지 알아보자. 1. 메서드 영역 : 클래스정보를 보관한다. 클래스 정보에서도 3가지로 나누어볼 수 있다. 1. 실행 코드 : 클래스의 실행코드(바이트코드), 필드, 메서드, 생성자 코드 등 모든 실행코드가 존재한다. 2. static 영역 : 클래스 변수, 즉 ..
- Total
- Today
- Yesterday
- los 15
- static
- Los
- webhacking.kr
- 김영한 실전 자바 기초
- java
- 백준 피보나치 수열
- 스프링
- lord of sql
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- 기술스택
- samron
- 백준
- zixem
- 상속
- 프로그래머스 상품을 구매한 회원 비율 구하기
- extends
- 상품을 구매한 회원 비율 구하기 파이썬
- 백준 피보나치
- 김영한
- 프로그래머스
- samron3
- spring
- 김영한 실전 자바 중급
- ys.k
- 자바
- 김영한 실전 자바 기본
- los 15단계
- 코딩테스트
- 코딩테스트 준비
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |