JAVA 18

인터페이스 vs 추상 클래스

⭐둘 다 모두 추상 메소드라는 것을 가집니다 ⭐둘 다 객체 생성은 불가능하고, 타입으로만 사용됩니다 ⭐인터페이스는 스펙이나 원하는 기능을 정의하고자 쓰지만, 추상 클래스는 '상속 + 약간의 강제 성이 목적'입니다 ⭐인터페이스는 상수, 추상 메소드만 존재하지만, 추상 클래스는 상속이 원래 목적이므로 실제 변수나 메소드를 그대로 가지고 있습니다. ⭐인터페이스는 부채만 남겨주지만, 추상 클래스는 재산도 남겨 줍니다 인터페이스는 추상 메소드만 존재하기 때문에 부채 만 잔뜩 던져주게 되지만 추상 클래스는 상속의 원래 기능을 그대로 사용할 수 있습니다. ⭐인터페이스는 다중 상속도 가능하지만, 추상 클래스는 단일 상속만 됩니

JAVA 2022.03.19

상속, 다운 캐스팅, instanceof

⭐컴파일 허가 바라보던 타입을 부모 타입이 아니라 자식 타입으로 보는 것을 다운 캐스팅(Down Casting)이라고 합니다 글만으로는 이해하기 어려워 가벼운 예제를 통해 알아보겠습니다 public class ZR { public void make(){ System.out.println("야야야"); } } public class RR extends ZR{ public void rrzd(){ System.out.println("호호 "); } } 2개의 클래스를 만들어주었습니다 RR 클래스는 현재 ZR클래스를 상속하고있습니다 여기서 RR클래스의 rrzd 를 부르면 어떻게 될까요?? 이렇게 컴파일 에러가 발생합니다 왜 이럴까요?? 그냥 생각해보면 당연하게 불러올 수 있을 줄 알았던 코드인데 이런 경우에 컴..

JAVA 2022.03.19

추상 클래스(Abstract Class)

추상 클래스의 중요한 개념 추상 클래스(Abstract Class): 객체가 아니라 타입으로만 존재하고 추상 메서드를 가 지는 존재 추상 클래스라는 것은 간단히 말해서 객체 생성은 안 되고 부모 클래스로만 존재하는 클래스를 의미합니다. 즉 변수의 타입이 될 수는 있지만, 객체 생성을 못합니다!! 추상 클래스라는 것은 클래스의 용도가 객체 생성 용도로 사용하지 않는 경우에 사용합니다. 클래스를 객 체 생성의 용도가 아니라면 변수의 타입으로 선언하는 용도와 상속의 본연의 기능으로 특정한 코드를 하 위 클래스로 물려주는 기능을 활용할 때 사용합니다. 추상 클래스는 추상 메소드라는 것을 가질 수 있습니다. 추상 메서드라는 것은 하위에서 '반드시 오버 라이 더하라'는 강제성을 가지는 메서드입니다. 추상 메소드가 ..

JAVA 2022.03.19

눈 속임 Override

ui에서 input를 찾으면 아래 그림처럼 내부적으로 돌아가게 됩니다 이러면 어떻게 할 건데..? 이런 경우도 있을 수 있습니다 바로 SampleUI에 BasicUI에 input 하고 똑같은 input가 있다면??? 그럼 실행하는 입장에서는 BasicUI까지 올라갈 필요 없이 SampleUI에 있는 input를 보게 될 것입니다 이런 걸 바로 Override라고 합니다 Override 컴파일할 때는 부모 타입에 있는 메서드를 바라보고 있는데 실제로 실행을 할 때는 실핼될때 객체에 있는 메서드가 실행되는 것을 말합니다 마치 눈속임 같지요?? ✨Override는 상속과 인터페이스 관계에서만 성립합니다!! 그럼 왜 Override를 할까요?? 바로 상황에 따라서 다르게 동작해야 하는 부분을 Override로 ..

JAVA 2022.03.14

상속 심화

상속의 예제를 보면서 상속을 좀 더 이해해보려고 합니다 public class BasicUI { private Scanner scanner; //Scanner 생성자 public BasicUI(Scanner scanner) { this.scanner = scanner; } //String 타입 입력받기 public String input(String msg){ System.out.println(msg); return scanner.nextLine(); } //int 타입 입력받기 public int inputInt(String msg){ String inputStr = input(msg); return Integer.parseInt(input(msg)); } } BasicUI Class에서는 Scanne..

JAVA 2022.03.14

상속이란?

상속이란? 부모 Class와 자식 Calss 가있으며 자식 Class 가 부모 클래스를 선택해서 그 부모의 내용을 물려받아서 가지고 오는 것 자식 클래스는 기본적으로 부모의 모든 메서드 + (자신의 고유 기능) 따라가 자식 클래스는 부모 클래스보다 기능이 더 많은 경우가 많습니다 상속의 기준 판단하기 보통 JAVA상속을 검색하면 이런 이미지가 나온다 이 이미지가 의미하는 뜻은 알겠지만 단순하게 이 구조가 상속이다!라고 생각하면 안 된다 그 이유는 위 구조는 로직의 구조이다 로직의 구조로서 저 데이터를 보면 상속의 대상이지만 만약 저걸 데이터로써 본다면 어떨까??? 데이터로써 보면 이런 구조일 것이다 이것은 클래스 하나에 여러 개의 인스턴스일 뿐이다 즉 상속의 대상으로 보기 어렵다 그렇다면 상속을 어떤 기..

JAVA 2022.03.14

ArrayList

기존배열 private VoterVO [] arr; public VoterDAO(){ arr= new VoterVO [4]; arr[0] = new VoterVO(1, "홍길동"); arr[1] = new VoterVO(2, "고길동"); arr[2] = new VoterVO(3, "박길동"); arr[3] = new VoterVO(4, "이길동"); } 기존 배열 방식 각 배열에 내용을 지정해주어야 하고 처음 설정했던 크기만큼만 사용할 수 있음 ArrayList 길이의 제한이없다 int의 크기만큼 만들어진다 ArrayList 선언 , 초기화 ArrayList 선언 타입 이름 private ArrayList voArrayList; //ArrayList 선언 타입 이름 private ArrayList vo..

JAVA 2022.03.13

배열과 사랑에 빠진 반복문

배열과 반복문은 같이 정말 많이 사용된다 public static void main(String[] args) { String[] name = {"철수","영희","명자","숙희"}; for (int i = 0; i < name.length ; i++) { String names =name[i]; //새로운 변수 names를 선언 name[]에 i 값을 넣어준다 System.out.println(names + "이 상담을 받았습니다"); //names = name[i] } } ⭐결과 철수이 상담을 받았습니다 영희이 상담을 받았습니다 명자이 상담을 받았습니다 숙희이 상담을 받았습니다 for-each 배열+반복문의 간편한 사용법!!! public static void main(String[] args) { ..

JAVA 2022.03.06