본문 바로가기
반응형

객체지향 OOP11

[자바의정석 기초 객체지향 개념] 인터페이스 인터페이스 : 추상 메서드의 집합 : 구현된 것이 전혀 없는 설계도 (모든 멤버가 public) interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수); } class 클래스이름 implements 인터페이스이름 { // 인터페이스에 정의된 추상메서드를 모두 구현해야 한다. } 예제 interface PlayingCard { public static final int SPADE = 4; final int DIAMOND = 3; // public static final int DIAMOND = 3; static int HEART = 2; // public static int HEART = 2; int CLOVER = .. 2022. 5. 31.
[자바의정석 기초 객체지향 개념] 추상클래스 추상 클래스 : 미완성 설계도, 미완성 메서드를 갖고 있는 클래스 다른 클래스 작성에 도움 주기 위한 것으로, 인스턴스 생성 불가 상속을 통해 추상 메서드를 완성해야 인스턴스 생성 가능 abstract class Player { // 추상클래스 abstract void play(int pos); // 추상메서드 abstract void stop(); // 추상메서드 } Player p = new Player(); // 에러! class AudioPlayer extends Player { void play(int pos) { ... } // 추상메서드 구현 void stop() { ... } // 추상메서드 구현 } AudioPlayer ap = new AudioPlayer(); // OK 추상 클래스 작.. 2022. 5. 30.
[자바의정석 기초 객체지향 개념] 다형성 다형성 polymorphism (중요!) : 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 1 조상 타입 참조변수로 자손 타입 인스턴스 참조하기 // 1. 보통 - 참조변수와 인스턴스의 타입이 일치함 SmartTv s = new SmartTv(); // 2. 다형성 - 조상 타입 참조변수로 자손 타입 인스턴스 참조 -> 타입 불일치 -> 에러아님! Tv t = new SmartTv(); // 3. 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다. -> 에러 SmartTv st = new Tv(); SmartTv 리모콘으로 SmartTv를 다루면 모든 기능을 사용할 수 있다. Tv 리모콘 (조상) 으로 SmartTv를 다루면 일부 기능만 사용할 수 있다. SmartTv 리모콘에있는 일부기능.. 2022. 5. 30.
[자바의정석 기초 객체지향 개념] 제어자 static, final, abstract / 접근 제어자 / 캡슐화 제어자 modifier : 클래스와 클래스의 멤버에 부가적인 의미 부여 (=형용사) 접근제어자: public, protected, private, (default) 그외: static, final, abstract, native, transient ... 하나의 대상에 여러 제어자를 같이 사용 가능 (접근제어자는 하나만) public class Modifier { public static final int width = 200; public static void main(String[] args) { System.out.println(width); } } static: 클래스의, 공통적인 static 멤버변수 모든 인스턴스에 공통적으로 사용된다 클래스 변수는 인스턴스를 생성하지 않고도 사용 가능하다 클래.. 2022. 5. 30.
[자바의정석 기초 객체지향 개념] package, import 패키지 : 서로 관련된 클래스의 묶음 클래스는 클래스파일 (*.class), 패키지는 폴더, 하위 패키지는 하위 폴더 클래스의 실제 이름은 패키지를 포함 패키지는 소스파일의 첫번째 문장으로 단 한번 선언 같은 소스 파일의 클래스들은 모두 같은 패키지에 속하게 된다 패키지 선언이 없으면 이름없는 (default) 패키지에 속하게 된다. package com.codechbo.book; // 패키지 선언 public class PackageTest { public static void main(String[] args) { System.out.println("hello world"); } } C:\\java\\~\\bin > java com.codechbo.book.PackageTest hello world .. 2022. 5. 30.
[자바의정석 기초 객체지향 개념] 참조변수 super, 생성자 super() 참조변수 super : 객체 자신을 가리키는 참조변수 (= this) 인스턴스 메서드 (생성자) 내에만 존재 (static 메서드에서 사용 불가) 조상의 멤버를 자신의 멤버와 구별할 때 사용 class Parent { int x = 10; int y = 10; } class Child extends Parent { int x = 20; void method() { // 부모와 변수 이름이 같을 경우 this.x super.x로 구분한다. System.out.println(x); // 20 System.out.println(this.x); // 20 System.out.println(super.x); // 10 // 상속 받았으므로 this.y, super.y 둘 다 사용가능하다. System.out.pr.. 2022. 5. 30.
[자바의정석 기초 객체지향 개념] 오버로딩 VS 오버라이딩 오버로딩 : 한 클래스 안에 같은 이름의 메서드를 여러개 정의하는 것 대표적인 오버로딩 void println() void println(char x) void println(int x) void println(String x) ... 오버로딩 조건 메서드 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야 한다. 반환 타입은 영향 없다. 오버로딩 예제 매개변수는 다르지만 같은 의미의 기능 수행 class Math { int add(int a, int b) { return a+b; } long add(long a, long b) { return a+b; } int add(int[] a) { int result = 0; for(int i=0; i 2022. 5. 30.
[자바의정석 기초 객체지향 개념] 상속 VS 포함 상속 : 기존의 클래스로 새로운 클래스를 작성하는 것 (코드의 재사용) 두 클래스를 부모와 자식으로 관계를 맺어주는 것 자손은 조상의 모든 멤버를 상속받는다. (생성자, 초기화블럭 제외) 자손의 변경은 조상에 영향을 미치지 않는다. class 부모클래스 { ... } class 자식클래스 extends 부모클래스 { ... } 포함 : 클래스의 멤버로 참조변수를 선언하는 것 작은 단위의 클래스를 만들고, 이들을 조합해서 클래스를 만든다. // Car는 Engine과 Door를 포함 class Car { Engine e = new Engine(); Door[] d = new Door[4]; } 클래스 간의 관계 결정하기 상속 관계 - A는 B이다 (is-a) → 꼭 필요할때만 쓰임 포함 관계 - A는 B를.. 2022. 5. 30.
[자바의정석 기초 객체지향 개념] 메서드 메서드란? 1 문장들을 묶어 놓은 것 2 값(입력)을 받아서 처리하고 결과를 반환 하는 것 장점: 중복 코드 제거, 관리 용이, 재사용 가능 return문 반환타입 void 메소드가 아닌 경우 return 문옆에 반환값이 없으면 에러 발생 // 정상 int max(int a, int b) { if(a > b) return a; else return b; } // 에러 int max(int a, int b) { if(a > b) } 스택: 밑이 막힌 상자, 위에 쌓인다. 호출 스택 call stack : 메서드 수행에 필요한 메모리가 제공되는 공간 메서드가 호출되면 호출 스택에 메모리 할당, 종료되면 메모리 해제 호출 스택 변화 예제 기본형 매개변수 VS 참조형 매개변수 기본형 매개변수 - read onl.. 2022. 5. 29.
728x90
반응형