728x90
반응형
728x90
반응형
다형성 - polymorphism 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 다만 반대의 경우는 불가능 (자손타입이 조상타입 객체를 가리키는 것) 참조된 인스턴스 멤버의 개수(조상)가 실제 사용 가능한 개수(자손)보다 적기때문에 오류 발생 아래와 같이 객체와 인스턴스 타입이 불일치함을 다형성을 표현하였다고 함 TV t = new SmartTV(); // 객체와 인스턴스 타입이 불일치 SmartTV st = new SmartTV(); 객체와 인스턴스가 불일치함의 의미는 사용할 수 있는 인스턴스 멤버의 개수가 달라진다고 볼 수 있다. 만약 다형성이 아니라면 (객체와 인스턴스가 일치하면) 아래의 코드처럼 TV의 클래스에 들어있는 총 4개의 변수 + SmartTv 클래스의 2개의 변수 = 총 6개를 사..
패키지 Package 서로 관련된 클래스의 묶음 클래스는 .class 파일, 패키지는 폴더, 하위 패키지는 하위 폴더 rt.jar이 클래스들을 압축한 파일 java9 부터 module로 변경되어 잘게 쪼개짐 = 용량 간소화 목적 첫번째 문장으로 단 한번만 선언 같은 소스 파일의 클래스는 모두 같은 패키지(첫문장)에 속함 패키지 선언이 없으면 unnamed의 패키지에 선언이 됨 (이름없는 패키지) 클래스 패스(classpath) 제어판 > 환경변수 > 추가 > 명령 프롬프트에서 읽어올 파일 경로를 추가 추가할 때 이름은 classpath, 경로는 폴더에서 복붙 지정한 후 java (읽을 클래스 파일 정확하게 입력)
참조변수(super) IV, LV 구별에 사용되는 this 와는 다르게 super는 조상멤버와 자신의 멤버를 구별할 때 사용 super는 parent의 x로 구별하여 사용하고 this는 child의 x로 구별하여 사용함 일반 x는 child의 멤버변수로 오버라이딩되어 20으로 출력됨 조상의 변수가 존재하지만 자식의 변수가 존재하지 않을 때는 this를 사용해도 조상의 변수로 사용됨 ( = 10으로 통일) 출력문: x = 20 super.x = 10 this.x = 20 public static void main(String[] args) { child c = new child(); c.method(); } } class parents{ int x = 10; } class child extends pare..
단일 상속 Java는 단일 상속만을 허용한다. 아래와 같은 두개의 상속은 불가 ( C++만 가능) class SmartTv extends TV, option{ 따라서 비중이 높은 클래스는 상속으로, 비중이 낮은 클래스는 포함으로 하여 코드의 간결화 가능 아래는 SmartTV에서 비중이 높은? DVD클래스를 상속받고 TV클래스를 포함시켜 channel 값을 지정한 다음 메서드만 출력받아 아래와 같이 출력 출력문: 1 10 public static void main(String[] args) { SmartTv st = new SmartTv(); st.channel = 0; st.channelup(); System.out.println(st.channel); st.fast(); System.out.printl..
상속 inheritance 기존의 class에서 새로운 class를 작성하는 것 (코드의 재사용) 두 class를 부모와 자식의 관계로 맺어주는 것 상속 inheritance를 쓰는 이유 적은 양의 코드를 사용하여 새로운 class 작성 가능 공통적으로 코드를 관리 가능 (새롭게 추가 or 변경) = 유지보수 용이 아래와 같이 지정할 수 있음 extends 함수를 사용 class parents{} class child extends parents{} 자식은 조상(부모의 부모...부모) 모든 멤버 변수를 상속받는다 다만 생성자와 초기화 블럭 제외 따라서 자식의 멤버변수는 항상 부모와 같거나 많다 class parents{ int age; } class child extends parents{} // cla..
TV 리모컨 메서드 작성 예시 channelup, channeldown, volumeup, volumedonw 메서드를 작성하여 main 함수안에 print문으로 출력함 final 상수 값을 지정하여 최대 채널값, 최소 볼륨값을 넘어가면 변동이 안되도록 조건문 삽입 public static void main(String[] args) { MyTV tv = new MyTV(); tv.channel = 100; tv.volume = 0; System.out.println("CH: " + tv.channel + " VOL: " + tv.volume); tv.channelup(); tv.volumedown(); System.out.println("CH: " + tv.channel + " VOL: " + tv.v..
숫자 섞기 메서드 생성 int 배열을 매개변수로 줄 때 그 배열의 숫자를 자동으로 섞는 메서드 생성 출력문 : [6, 7, 9, 4, 5, 2, 8, 1, 3] 숫자 배열을 섞는 알고리즘은 동일함. 같은 알고리즘을 메서드로 생성하여 재사용이 가능한 코드로 만듬 public static void main(String[] args) { int[] original = {1,2,3,4,5,6,7,8,9}; ArrayShuffle as = new ArrayShuffle(); as.shuffle(original); } } class ArrayShuffle{ //메서드 public void shuffle(int[] a) { Random random = new Random(); for(int i = 0; i
메서드간의 호출 & 참조 static 메서드간의 호출은 가능하지만 static 메서드는 인스턴스 변수 호출 불가능 따라서 static 메서드는 인스턴스 메서드도 호출이 불가능하다. 이유: static 메서드는 그냥 사용이 가능한 메서드지만 인스턴스 변수는 객체를 생성해야 사용이 가능하고 인스턴스 메서드를 호출 시 객체가 존재하지 않을 수 있어 사용이 불가능 static 메서드의 사용은 인스턴스 변수&메서드가 없거나 공유해야할 메모리 정보가 있을 때 사용 오버로딩 (overloading) 정의: 매개변수는 다르지만 같은 기능을 수행; 오버로딩 성립 기준 반환 기준은 상관없음 메서드 이름이 같을 것 매개변수 개수나 타입이 다를 것 반환타입은 int, long이지만 상관이 없다. 매개변수의 타입이 각각 다르고..