목록JAVA (101)
Frog is cry
추상 클래스, 추상 메소드, 재정의 여러 클래스의 공통된 특성(필드, 메소드)를 추출해서 선언한 것을 추상클래스라고 한다. 추상 클래스 > 실체 클래스(객체 생성용 클래스)들의 공통적인 특성(필드,메소드)을 추출하여 선언한 것 > 추상 클래스와 실체 클래스는 부모, 자식 클래스로서 상속 관계를 가짐 ex) Bird, Insect, Fish를 실체 클래스라고 부르며, Animal은 추상 클래스이다. ex) TelePhone, SmartPhone를 실체 클래스라고 부르며, Phone은 추상 클래스이다. 추상 클래스의 용도 > 실체 클래스에 반드시 존재해야할 필드와 메소드의 선언(실체 클래스의 설계 규격 - 객체 생성용이 아님) > 실체 클래스에는 공통된 내용은 빠르게 물려받고, 다른 점만 선언하면 되므로 시..
클래스 타입 변환, 자동 타입 변환, 다형성, 강제 타입 변환, instanceof 기본타입과 마찬가지로 클래스도 타입 변환이 있다. ex) int i = 10; / double d = i; ex) A a = new A(); / B b = a; 이를 활용하면 객체 지향 프로그래밍의 다형성을 구현할 수 있다. 다형성 > 사용 방법은 동일하지만 다양한 객체 활용에 여러 실행결과가 나오도록 하는 성질 > 메소드 재정의와 타입 변환으로 구현 자동 타입 변환(promotion) > 프로그램 실행 도중 자동으로 타입 변환 일어나는 것 > 부모타입 변수 = 자식타입; 일경우만 가능 부모 타입으로 자동 타입 변환 이후에는 부모 클래스에 선언된 필드 및 메소드만 접근 가능 예외적으로, 메소드가 자식 클래스에서 재정의될 ..
메소드 재정의 (오버라이딩 / Overriding) > 부모 클래스의 메소드가 자식 클래스에서 사용하기에 부적합할 경우 자식 클래스에서 수정하여 사용 메소드 재정의 방법 > 부모 메소드와 동일한 시그니처 가져야 함 > 접근 제한 더 강하게 재정의할 수 없음 > 새로운 예외를 throws 할 수 없음 final 클래스와 final 메소드 > 해당 선언이 최종 상태이며 수정될 수 없음을 의미 > 클래스 및 메소드 선언 시 final 키워드를 사용하면 상속과 관련됨 상속할 수 없는 final 클래스 > 부모 클래스가 될 수 없어 자식 클래스 만들 수 없음을 의미 ex) public final class 클래스 { ...} > extedns 불가 상속 > 부모 클래스의 필드와 메소드를 자식 클래스에서 사용할 수..
상속, 메소드 재정의, final 클래스, final 메소드 상속 > 이미 개발된 클래스를 재사용하여 새로운 클래스를 만들기에 중복되는 코드를 줄임 > 부모 클래스의 한번의 수정으로 모든 자식 클래스까지 수정되는 효과가 있어 유지보수 시간이 줄어듬 클래스 상속 > 자식 클래스 선언 시 부모 클래스 선택 > extends 뒤에 부모 클래스 기술 ex) class 자식클래스 extends 부모클래스 { } > 여러 개의 부모 클래스 상속할 수 없음 > 부모 클래스에서 private 접근제한 갖는 필드와 메소드는 상속 대상에서 제외 > 부모와 자식 클래스가 다른 패키지에 존재할 경우 default 접근 제한된 필드와 메소드 역시 제외
메소드 package day18; public class Calc1 { public void method1(int m1) { System.out.println(m1); } public String method2(String m2, String m3) { String result = m2 + m3; System.out.println(result); return result; } } package day18; public class Calc1_Ex { public static void main(String[] args) { Calc1 c1 = new Calc1(); c1.method1(10); c1.method2("1","2"); } } package day18; public class Calc2 { Str..
package day17; // 메소드 선언 public class Calculator { // 메소드 void powerOn() { System.out.println("전원을 켭니다."); } int plus(int x, int y) { int result = x + y; return result; } double divide(int x, int y) { double result = (double)x / (double)y; return result; } void powerOff() { System.out.println("전원을 끕니다."); } } package day17; public class Calculator_Ex { public static void main(String[] args) { Ca..
Singleton package singleton; // 단 하나의 객체만 생성하고싶을때 사용 public class Singleton { private static Singleton singleton = new Singleton(); // private : 내부에서 생성자 사용가능 private Singleton() {} static Singleton getInstance() { return singleton; } } package singleton; public class Singleton_Ex { public static void main(String[] args) { //Singleton obj1 = new Singleton(); //Singleton obj2 = new Singleton(); S..
패키지 선언, import문, 접근제한자, Getter/Setter 패지키 > 패키지의 물리적인 형태는 파일 시스템의 폴더 > 패키지는 클래스의 일부분으로, 클랙스를 유일하게 만들어주는 식별자 역할 > 클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스로 인식 > 클래스의 전체 이름은 패키지 > 클래스 사용해서 다음과 같이 표현 패키지 선언 > 클래스 작성 시 해당 클래스가 어떤 패키지에 속할 것인지를 선언 package.상위패키지.하위패키지; import문 > 사용하고자 하는 클래스 또는 인터페이스가 다른 패키지에 소속된 경우 > 해당 패키지 클래스 또는 인터페이스 가져와 사용할 것임을 컴파일러에 통치 접근제한자 (access modifier) > 클래스와 인터페이스 및 이들이 가진 멤버의 접근 제..