일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정렬
- auto.create.topics.enable
- yield
- 자바스터디
- 익명 클래스
- 합병 정렬
- annotation processor
- 제네릭 와일드 카드
- throwable
- docker
- 바운디드 타입
- System.err
- raw 타입
- 브릿지 메소드
- 상속
- 접근지시자
- 로컬 클래스
- System.out
- 자바할래
- junit 5
- 함수형 인터페이스
- 람다식
- 프리미티브 타입
- 제네릭 타입
- Switch Expressions
- Study Halle
- github api
- 스파르타코딩클럽
- 항해99
- System.in
- Today
- Total
목록IT Study/JAVA OOP (37)
코딩하는 털보
객체 지향 프로그래밍 37. 인터페이스 인터페이스의 요소 추상 메서드 : 인터페이스는 모두 추상 메서드로만 구현되어 있다. 상수 : new가 될 수 없기때문에 모든 변수는 상수이다. 디폴트 메서드 : 하위 클래스들의 중복 구현 방지. 정적 메서드 private 메서드 인터페이스의 선언과 구현 public interface Calc { int iNum = 3; //컴파일 과정에서 상수로 변환 int add(int num1,int num2); //컴파일 과정에서 추상 메서드로 변환 } package interfaceex; public class CalcTest { public static void main(String[] args) { Calc calc = new CompleteCalc(); int n1 =..
객체 지향 프로그래밍 34. 추상 클래스 응용: 템플릿 메서드 템플릿 : 틀이나 견본 템플릿 메서드 : 추상 메서드나 구현된 메서드를 활용하여 전체의 흐름을 정의 해 놓은 메서드 final로 선언하여 재정의할 수 없게함 템플릿 메서드 패턴 : 디자인 패턴의 일종 프레임 워크에서 많이 사용되는 설계 패턴 추상 클래스로 선언된 상의 클래스에서 추상 메서드를 이용하여 전체 구현의 흐름을 정의하고 구체적인 각 메서드 구현은 하위 클래스에 위임함 하위 클래스가 어떤 구현을 하든 템플릿 메서드에 정의된 시나리오 대로 수행됨 package template; public abstract class Car { public abstract void drive(); public abstract void stop(); pub..
객체 지향 프로그래밍 33. 추상 클래스란? 추상 클래스 추상 메서드를 포함한 클래스 추상 메서드 : 구현코드 없이 선언부만 있는 메서드 abstract 예약어 사용 new(인스턴스화) 할 수 없음 추상 클래스는 상속의 상위 클래스로 사용된다. 추상 클래스의 추상 메서드는 하위 클래스가 구현해야 한다. package abstractex; public abstract class Computer { //추상 메서드가 있으면 클래스는 항상 추상 클래스이다. public abstract void display(); //이 메서드는 구현하지 않겠다는 의미드 (추상 메서드) public abstract void typing(); //추상 메서드들은 하위 클래스에서 구현된다. public void turnOn() {..
객체 지향 프로그래밍 31. 다운캐스팅과 instanceof 다운캐스팅 묵시적으로 업캐스팅된 인스턴스가 원래의 자료형(하위 클래스)으로 변환되어야 할 때 사용. 다운캐스팅은 명시적으로 이루어진다. Customer vc = new VIPCustomer(); //업캐스팅 - 묵시적 VIPCustomer vCustomer = (VIPCustomer)vc; //다운캐스팅 - 명시적 package polymorphism; import java.util.ArrayList; class Animal { public void move() { System.out.println("동물이 움직입니다."); } } class Human extends Animal { @Override public void move() { Sys..
객체 지향 프로그래밍 28. 다형성 다형성 이란 하나의 코드가 여러 자료형으로 구현되어 실행되는 것 같은 코드에서 여러 실행 결과가 나옴 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나이다. OOP의 유연성, 재활용성, 유지보수성에 기본이 되는 특징이다. 다형성의 장점 유사한 클래스가 추가되는 경우의 유지보수에 용이하고 각 자료형 마다 다른 메서드를 호출하지 않으므로 코드에서 많은 if문이 사라진다. package polymorphism; import java.util.ArrayList; class Animal { public void move() { System.out.println("동물이 움직입니다."); } } class Human extends Animal { @Overri..
객체 지향 프로그래밍 28. 메서드 오버라이딩 오버라이딩 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의할 수 있다. 상위 클래스 Customer public int calcPrice(int price) { bonusPoint += price*bonusRatio; return price; } 하위 클래스 VIPCustomer (VIP 할인 추가를 위한 메서드 재정의) @Override //애노테이션.. 컴파일러에게 특정한 정보를 제공해주는 역할 //@Override는 오버라이딩 정보 제공 public int calcPrice(int price) { //오버라이딩 소스 메서드와 선언부가 동일해야 한다 bonusPoint..
객체 지향 프로그래밍 27. 상속에서 클래스 생성 과정과 형변환 하위 클래스 생성시 항상 상위 클래스가 먼저 생성되어야 한다. package inheritance; public class VIPCustomer extends Customer{ //상위 클래스(Customer) 지정 double salesRatio; private int agentID; public VIPCustomer() { //super(); //아무런 상위 클래스 생성자 호출 명령이 없으면 pre-compile 단계에서 이 함수가 들어감 //super : 상위 클래스의 메모리 위치 함수, super() : 상위 클래스의 기본 생성자 호출 //super(0, null); //만약 상위 클래스의 기본 생성자가 없으면, 명시적으로 상위 클래..
객체 지향 프로그래밍 25. 상속이란 클래스에서 상속의 의미 : 새로운 클래스를 정의할 때 이미 구현된 클래스를 상속받아서 속성이나 기능이 확장되는 클래스를 구현 함. class B extends A { } 상속하는 클래스 : 상위 클래스 상속받는 클래스 : 하위 클래스 자바에서는 다중 상속이 불가능하다. 상속을 사용하는 경우 : 상위클래스는 더 일반적인 개념과 기능을 가짐 하위클래스는 더 구체적인 개념과 기능을 가짐 상위 클래스 package inheritance; public class Customer { protected int customerID; // 하위 클래스들이 참조할수 있도록 private가 아닌 protected 사용 protected String customerName; protect..
객체 지향 프로그래밍 22. ArrayList 사용하기 ArrayList 자바에서 제공하는 객체 배열이 구현된 클래스 객체 배열을 사용하는데 필요한 여러 메서드들이 구현되어 있음 package array; import java.util.ArrayList; public class ArrayListTest { public static void main(String[] args) { //ArrayList list = new ArrayList(); //요소 자료형 미지정 ArrayList list = new ArrayList(); //요소 자료형 지정 //몇가지 메서드 가능 테스트 list.add("aaa"); //add 메서드를 통해 요소 추가 list.add("bbb"); list.add("ccc"); fo..
객체 지향 프로그래밍 21. 다차원 배열 다차원 배열 2차원 이상의 배열 2차원 배열 int[][] arr = new int [2][3]; //6개 요소 package array; public class TwoDimension { public static void main(String[] args) { //int[][] arr = new int[2][3]; int[][] arr = {{1,2,3},{4,5,6,7}}; System.out.println(arr.length); //2차원 배열에서 length는 행의 개수 System.out.println(arr[0].length); //0번째 행의 길이 System.out.println(arr[1].length); //행을 기준으로 열을 돌린다.(2중 fo..