| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- oAuth2
- 백엔드공부
- 카카오인증토큰받기
- 인스턴스
- GitHub_Actions
- 카카오사용자정보가져오기
- ci/cd
- 상속
- static
- 엔티티 생명주기
- button
- 백엔드 로드맵
- 제로베이스
- form
- 백엔드스쿨
- feignClient
- MIND 2023 #후기
- 예외
- Java
- html
- spring
- jenkins
- tag
- Docker
- 어떤 개발자?
- 카카오인가코드받기
- input
- 엔티티 매니저
- Interface
- Spring API
- Today
- Total
목록Java (38)
HiDevelop
특성 하나의 클래스가 여러 개의 인터페이스를 구현할 수 있다. 타 언어의 다중상속과 같은 형식으로 사용할 수 있다. interface LCD{} interface TV extends LED {...} interface Computer{...} /* * 하나의 클래스가 여러 개의 인터페이스를 구현할 수 있다. */ class IPTV implements TV, Computer ,LCD{...} 하나의 클래스 당 한 개 클래스만 상속해야하는 것과는 다르게, 인터페이스는 하나의 클래스가 여러개의 인터페이스를 구현할 수 있다. Java는 다중상속을 지원하지 않기 때문에 이러한 특성을 타 언어의 다중상속과 같은 형식으로도 사용할 수 있다. Java가 다중상속을 지원하지 않는 이유 Son은 간접적으로 GrandFa..
abstract class 완전하지 않은 클래스를 의미 인스턴스 생성이 불가능한 클래스 왜 필요할까? 코드를 작성하다 보면 상속의 관계를 형성하기 위해서만 존재하는 상위 클래스가 존재 인스턴스화 시키기 위해서 정의한 클래스가 아닌 클래스 존재 위 클래스를 개발자가 실수로 인스턴화 시켰다면, 코드 상에 오류 발생 가능성 증가 abstract 클래스를 사용함으로써 코드의 안정성 상승 사용법 abstract class BookStorage{ public abstract void addBookInfo(String name, int booknum); //몸체는 정의 x public abstract void searchBook(int booknum);// 매개변수 정의 가능 } 주의점 : 한 개이상의 메소드를 ab..
Object 클래스 - 클래스를 정의할 때 따로 상속관계를 정의하지 않는다면, Object 클래스를 상속하게 됩니다. - 다른 클래스와 상속관계에 있더라고 상위 클래스가 Object 클래스를 상속받고 있기 때문에 간접적으로 상속관계에 있게 됩니다. Class final / Method final final class Food final public void Eat(){...} - 클래스 앞에 final을 선언하면, Food 클래스는 상속관계에 두는 것을 승인하지 않습니다. - 메소드 앞에 final을 선언하면, 오버라이딩을 승인하지 않습니다.
상속으로 얻을 수 있는 이점이 무엇일까?? 링크를 통해 코드를 한 번 보고 오시면 이해하는데 도움이 됩니다! https://github.com/wpdbs1229/Java/blob/main/Inheritance/MyFriendInfoBook.java GitHub - wpdbs1229/Java: TEST CODE TEST CODE. Contribute to wpdbs1229/Java development by creating an account on GitHub. github.com 1. 상위 클래스 참조변수를 통한 하위 클래스 메소드 접근! 상위 클래스 메소드를 하위 클래스들의 메소드와 오버라이딩 관계에 두면, 상위 클래스의 참조변수를 통해 각 하위 클래스의 오버라이딩 된 메소드를 호출 할 수 있습니다. ..
Instanceof - 상속 관계를 바탕으로 형 변환이 가능한지를 묻는 연산입니다. - Syntax : (object) instanceof (type) / - object가 type 이거나 type을 상속받는 클래스이면 true를 반환, 그렇지 않으면 false을 반환합니다. - 모든 클래스는 Object를 상속하기 때문에 항상 true를 반환합니다. - null 객체에 대해서는 항상 false를 반환합니다. class Box{ public void simpleWrap() {System.out.println("simple wrap");} } class PaperBox extends Box{ public void paperWrap() {System.out.println("paper wrap");} } cl..
Overriding 상위 클래스에서 정의 된 메소드의 이름, 반환형, 매개변수 선언까지 완전히 동일한 메소들를 하위 클래스에서 재정의 하는 것을 Method Overriding 이라고 합니다. 하위 클래스에서 오버라이딩된 상위 클래스 메소드를 호출하는 방법 class Speaker{ private int volumRate; public void showCurrentState() { System.out.println("Volum : " + volumRate); } public void setVolum(int vol) { volumRate = vol; } } class BaseEnSpeaker extends Speaker{ private int baseRate; public void showCurrentSt..
IS-A 관계 상속을 위한 관계에는 2가지 관계가 존재합니다. 첫번 째는 일종의 관계인 IS-A관계로 핸드폰의 경우 기존의 전화기에서 들고 다닐 수 있는 기능이 노트북 또한 컴퓨터에서 휴대성이 추가되었습니다. 따라서 아래와 같은 문장으로 관계를 표현을 할 수 있습니다. 핸드폰은 is a 전화기 입니다.(핸드폰은 일종의 전화기 입니다.) 노트북은 is a 컴퓨터 입니다.(노트북은 일종의 컴퓨터 입니다.) 상위 클래스를 상속받은 하위 클래스도 상위 클래스가 지니고 있는 모든 것을 가지고 있고, 거기에 추가적인 특성이 더해진 것 입니다. 아래의 예제를 보면 Computer을 상속받은 NotebookComp는 calulate()의 기능을 가지면서도 추가적인 기능으로 배터리를 충전하는 기능인 charging(),..
접근 제어 지시자 protected protected는 다른 패키지에 있다하더라도 상속관계에 놓이면 접근을 허용하는 접근 제어 지시자이다. private 멤버도 마찬가지로 상속되지만 선언된 클래스 내에서만 접근이 가능하기 때문에 하위 클래스에서 접근이 불가능하다. 따라서 간접적인 접근 방식을 사용해야한다. 아래 예제 getAccVal()와 같이 접근을 할 수 있다. class Accumulator{ //숫자를 누적하는 클래스 //선언된 클래스내에서만 접근이 가능하도록 private로 선언 private int val; Accumulator(int num){ val = num; } //상속관계에 놓인 클래스만 사용가능 protected void accumulate(int num){ if(num
상속은 기존의 클래스를 재활용하여 새로운 클래스를 만들기 위한 도구라고 할 수 있다. 하지만 상속을 이러한 측면에서만 보는 것은 옳지 않다. 그러한 이유는 무엇일까? - 클래스 하나를 재활용하는 것이 새롭게 디자인하는 것보다 더 큰 노력이 든다. - 재활용을 고려해서 클래스를 디자인할 경우, 설계에 필요한 시간이 몇 배 더 길어진다. - 상속을 통해 연관된 일련의 클래스에 대한 공통적인 규약을 정의할 수 있다. 물론, 이런 경우만 있는 것이 아니지만, 이렇지 않은 사례들은 매우 드물 것이다. 상속의 특성 - 상위 클래스를 상속받은 하위 클래스에서 상위 클래스에서 정의된 변수와 메소드를 사용가능하다. - 상속받은 클래스를 하위 클래서, 유도 클래스, 상속하는 클래스 상위 클래스, 기초 클래스라 부른다. 상..
package package1; import package1.StaticParameter; public class StaticParameter { public static int num = 0; public void functionA(){num++;} public void functionB(){num--;} public void functionC(){num *= num;} public static void main(String[] args) { StaticParameter testA = new StaticParameter(); StaticParameter testB = new StaticParameter(); StaticParameter testC = new StaticParameter(); System..