일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 브릿지 메소드
- 상속
- 스파르타코딩클럽
- Study Halle
- 바운디드 타입
- 제네릭 타입
- junit 5
- System.out
- 합병 정렬
- 프리미티브 타입
- github api
- System.in
- 정렬
- raw 타입
- annotation processor
- docker
- 함수형 인터페이스
- 접근지시자
- throwable
- auto.create.topics.enable
- System.err
- 익명 클래스
- yield
- 로컬 클래스
- Switch Expressions
- 항해99
- 제네릭 와일드 카드
- 자바할래
- 람다식
- 자바스터디
- Today
- Total
목록IT Study/JAVA OOP (37)
코딩하는 털보
객체 지향 프로그래밍 58. 람다식 람다식이란? (java 8 or newer) 자바에서 함수형 프로그래밍을 구현하는 방식 클래스를 생성하지 않고 함수의 호출만으로 기능 수행 (내부적으로 익명 객체 사용) 함수형 인터페이스 선언 함수형 프로그래밍이란? 순수 함수를 구현하고 호출 매개변수만 사용하기 때문에 외부에 사이드 이펙트를 주지 않고 병렬 처리 가능 안정적인 확장성있는 프로그래밍 방식 문법 InterFace itfc = str -> {System.out.println(str);}; InterFace2 itfc2 = (x,y) -> x+y //구현부가 return 문 하나라면 return, 중괄호 생략 가능 package lambda; public class TestStringConcat { publi..
객체 지향 프로그래밍 56. 내부 클래스 내부 클래스란 클래스 내부에 구현된 클래스 (중첩된 클래스) 클래스 내부에서 사용하기 위해 선언하고 구현하는 클래스 주로 외부 클래스 생성자에서 내부 클래스를 생성 인스턴스 내부 클래스, 정적 내부 클래스 package innerclass; class Outer { int outNum = 100; static int sNum =200; Runnable getRunnable(int i) { //Runnable 한 type의 객체를 반환하는 메서드 int num = 100; //지역변수 i, num class MyRunnable implements Runnable { //지역 내부 클래스, 메서드 내에 구현되어 있음 @Override public void run() ..
객체 지향 프로그래밍 55. Map 인터페이스 Map 인터페이스 쌍으로 이루어진 객체 관리를 위해 선언된 인터페이스 검색을 위한 자료구조 Map을 사용하는 객체는 key-value 쌍으로 되어있으며 Key는 중복될 수 없다. Key를 이용하여 값을 저장하거나 검색, 삭제할 때 사용하면 편리하다. 내부적으로 hash 방식으로 구현되어 있다. index = hash(key) //index는 저장 위치 key가 되는 객체는 객체의 유일성 여부를 알기 위해 equals(), hashCode() 메서드를 재정의한다. HashMap 클래스 Map 인터페이스를 구현한 클래스 중에서 가장 일반적으로 쓰인다. pair 자료를 쉽고 빠르게 관리할 수 있다. HashTable 클래스는 Vector 처럼 동기화를 제공한다. ..
객체 지향 프로그래밍 50. 컬렉션 프레임워크 컬렉션 프레임워크란? 프로그램 구현에 필요한 자료구조와 알고리즘을 구현해 놓은 라이브러리 java.util 패키지에 구현되어 있음 개발에 소요되는 시간을 절약하고 최적화된 라이브러리를 사용할 수 있음 Collection 인터페이스와 Map 인터페이스로 구성됨 Collection : 하나의 객체 관리를 위해 선언된 인터페이스 +--List : 순서가 있는 자료관리, 중복 허용 +--Set : 순서가 정해져있지 않음, 중복을 허용하지 않음 Map : 쌍으로 이루어진 객체 관리를 위해 선언된 인터페이스 Map을 사용하는 객체는 key-value 쌍으로 되어있으며 이중 Key는 중복될 수 없다. List 인터페이스 Collection의 하위 인터페이스 객체를 순서에..
객체 지향 프로그래밍 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..