일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- System.in
- 제네릭 타입
- 바운디드 타입
- docker
- 프리미티브 타입
- 스파르타코딩클럽
- raw 타입
- auto.create.topics.enable
- 브릿지 메소드
- 상속
- 자바할래
- 항해99
- Switch Expressions
- 로컬 클래스
- System.err
- 함수형 인터페이스
- annotation processor
- yield
- System.out
- 람다식
- 정렬
- junit 5
- 합병 정렬
- Study Halle
- 자바스터디
- throwable
- github api
- 익명 클래스
- 제네릭 와일드 카드
- 접근지시자
- Today
- Total
목록IT Study (82)
코딩하는 털보
객체 지향 프로그래밍 49. 제네릭 프로그래밍 제네릭 프로그래밍이란 변수의 선언이나 메서드의 매개변수를 하나의 참조 자료형이 아닌 여러 자료형으로 변환될 수 있도록 프로그래밍 하는 방식 실제 사용되는 참조 자료형으로의 변환은 컴파일러가 검증하므로 안정적인 프로그래밍 방식이다. package generic; public class GenericPrinter { // T : 자료형 매개변 // 클래스가 생성될때 T에 타입을 대입 //Meterial을 상속받은 타입만 들어갈 수 있게 제한 private T meterial; //재료는 플라스틱,파우더 등 여러가지일 수 있으므로 public T getMeterial() { //제네릭 타입을 사용하는 메서드 : 제네릭 메서드 return meterial; } pu..
객체 지향 프로그래밍 48. String, Wrapper 클래스 String String 클래스 선언하기 String str1 = new String("abc"); //인스턴스로 생성 String str2 = "abc" //상수풀에 있는 문자 package string; public class StringTest { public static void main(String[] args) { String str1 = new String("abc"); //힙메모리 영역 String str2 = "abc"; //상수 풀 String str3 = "abc"; System.out.println(str1 == str2); //false, 메모리 위치가 다르기 때문 System.out.println(str2 == st..
객체 지향 프로그래밍 46. Class 클래스 Class 클래스 자바의 모든 클래스와 인터페이스는 컴파일 후 class 파일로 생성됨 class 파일에는 객체의 정보(멤버변수, 메서드, 생성자 등)가 포함되어 있음 Class 클래스는 컴파일된 class 파일에서 객체의 정보를 가져올 수 있음 동적 로딩에 많이 사용 Class 클래스 가져오기 String s = new String(); Class c = s.getClass(); Class c = String.Class; Class c = Class.forName("java.lang.String"); //동적 로딩 : 컴파일 타임이 아닌 런타임에서 로딩 reflection 프로그래밍 Class 클래스로부터 객체의 정보를 가져와 프로그래밍하는 방식 로컬에 객..
객체 지향 프로그래밍 43. Object 클래스 Object 클래스 모든 클래스의 최상위 클래스 (java.lang.Object) (java.lang 패키지 위치 : /Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home/lib/src.zip , java.lang 패키지는 컴파일러가 자동으로 import 해준다.) 모든 클래스는 Object 클래스에서 상속 받음 모든 클래스는 Object 클래스의 메서드를 사용할 수 있음 모든 클래스는 Object 클래스의 일부 메서드를 재정의하여 사용할 수 있음 (final로 정의된 메서드들은 재정의 할 수 없음) package object; class Book{ String title; String author..
객체 지향 프로그래밍 40. 인터페이스의 요소들 상수 : 선언된 모든 변수는 상수로 처리 됨 메서드 : 모든 메서드는 추상 메서드 java8 디폴트 메서드 : 기본 구현을 가지는 메서드, 클래스에서 재정의 가능 정적 메서드 : 인스턴스 생성과 상관없이 인터페이스 타입으로 호출하는 메서드 java9 private 메서드 : 인터페이스 내에서 사용하기 위한 메서드, 클래스에서 재정의 불가능 추상 클래스와 다른점은 하나의 클래스에서 여러 인터페이스를 구현할 수 있다. 이떄, 디폴트 메서드의 이름이 중복된다면, 재정의 해야한다. 인터페이스 간에 상속할 수도 있다.(type inheritance) 이때 implements 대신 extends를 사용한다. 요소들 default void description() { ..
객체 지향 프로그래밍 38. 인터페이스를 활용한 다형성 구현 인터페이스의 역할 : 클라이언트에 어떤 메서드를 제공하는지 알려주는 명세 한 객체가 어떤 인터페이스 타입이라는 것은 그 인터페이스의 메서드를 구현했다는 의미 클라이언트 프로그램은 실제 구현내용을 몰라도 인터페이스의 정의만 알면 그 객체를 사용할 수 있다. ex) JDBC Lib의 Connect 인터페이스에 대한 실제 구현은 DB사에서하며 개발자는 구현내용을 몰라도 됨. package scheduler; public interface Scheduler { public void getNextCall(); public void sendCallToAgent(); } package scheduler; public class RoundRobin imple..
객체 지향 프로그래밍 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..