목록JAVA (57)
도찐개찐
람다함수란? 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어입니다. 현재 사용되고 있는 람다의 근간은 수학과 기초 컴퓨터과학 분야에서의 람다 대수이다. 람다 대수는 간단히 말하자면 수학에서 사용하는 함수를 보다 단순하게 표현하는 방법입니다. 람다의 특징 람다 대수는 이름을 가질 필요가 없다. - 익명 함수 (Anonymous functions) 두 개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다 대수로 단순화 될 수 있다. - 커링 (Curring) 익명함수? 익명함수란 말그대로 함수의 이름이 없는 함수입니다. 익명함수들은 공통으로 일급객체(First Class citizen)라는 특징을 가지고 있습니다. 이 일급 객체란..
중첩 클래스 및 내부 클래스(Nested Class and Inner Class) 클래스 유형 설명 최상위 클래스 패키지 멤버 클래스 패키지의 직접적인 멤버인 보통의 클래스나 인터페이스, 자바 가상 머신에 의해 직접 인식 되는 유일한 클래스 유형 중첩된 최상위 클래스 다른 클래스에 중첩 된 클래스나 인터페이스, 반드시 static으로 선언 되어야 함. 중첩 된 인터페이스는 묵시적으로 static 임 내부 클래스 멤버 클래스 다른 클래스의 비정적 멤버로 정의 된 클래스 외부 클래스 멤버를 사용할 수 있음 정적 멤버를 가질 수 없음 지역 클래스 코드 블록 내부에서 정의 된 클래스 외부 클래스의 멤버와 final 지역 변수를 사용할 수 있음 멤버 클래스와 동일한 제약이 있음 익명 클래스 식 내무에서 사용되는 ..
제네릭의 이해 🤔 제네릭? 제네릭이 갖는 의미는 일반화이다. 여기서 일반화의 대상은 자료형이다. 제네릭이 등장하면서 자료형에 의존적이지 않은 클래스를 정의할 수 있게 되었다. 제네릭을 쓰는 이유 class Apple { public String toString() { return "I am an apple."; } } class Orange { public String toString() { return "I am an orange."; } } class Box { private Object ob; public void set(Object o) { ob = o; } public Object get() { return ob; } } class FruitAndBox2 { public static void m..
다형성(polymorphism) 다형성은 자바 개발에서 상당히 많이 활용되는 문법이다. 상속과 관련이 깊다. 여러 가지 형태를 가질 수 있는 능력 이라고 정의된다. 이렇게 보면 좀 추상적인데, 실제 코드 작성에서 사용되는 개념에 비추어 정확히 표현하면 조상 클래스의 참조 변수로 자손 클래스의 객체를 다룰 수 있는 특징 이다. Ex) class Tv { boolean power; // 전원 int channel; // 채널 void power(){power = !power;} // 전원 on/off void channelUp(){++channel;} // 채널 올리기 void channelDown(){--channel;} // 채널 내리기 } class SubtitleTv extends Tv { // Tv..
instanceof 참조변수가 참조하는 인스턴스의 실제 타입을 체크하는데 사용. 이항연산자이며 피연산자는 참조형 변수와 타입. - 연산결과는 true, false. instanceof의 연산결과가 true이면, 해당 타입으로 형변환이 가능하다. instanceof의 기본 사용방법은 "객체 instanceof 클래스" 를 선언함으로써 사용합니다. class Car { String color; int door; void drive() { // 운전 System.out.println("drive, brooo~"); } void stop() { // 멈춤 System.out.println("stop!!!"); } } class FireEngine extends Car { // 소방차 void water() { ..
클래스 형변환(Casting) 서로 상속관계에 있는 타입간의 형변환만 가능하다. 자손 타입에서 조상타입으로 형변환하는 경우, 형변환 생략가능 자손타입 → 부모타입 (Up-casting) : 형변환 생략가능 자손타입 ← 부모타입 (Down-casting) : 형변환 생략불가 우선 아래 내용과 같이 클래스 상속 관계를 정의 합니다. 'Car' 라는 부모객체를 상속받고 있는 'FireEngine', 'Ambulance' 객체 형태를 작성해 봤습니다. class Car { String color; int door; void drive() { // 운전 System.out.println("drive, brooo~"); } void stop() { // 멈춤 System.out.println("stop!!!");..
"상속"을 공부하기전 사전에 알아두면 좋은 지식 인터페이스(Interface) : 사전적 의미로는 “전기 신호의 변환(變換)으로 중앙 처리 장치와 그 주변 장치를 서로 잇는 부분. 또는, 그 접속 장치.” USB, C-type, 콘센트, 전구 와 같은 것을 떠올려 주시면 됩니다. 각 기관 및 협회등에서 설정한 규격에 맞춘 설계도(어떠한 동작을 설계하지는 않음)를 제공하고 일반 기업에서 판매목적으로 해당 규격의 상품에 특별한 기능을 구현하여 판매 함으로써 상품의 규격화등을 통한 비용 절감, 편의, 개발기간 단축등의 이점을 볼수 있습니다. (ex : 예전 아이폰에선 5핀, 8핀등의 자체적인 접속장치를 사용 하여 비규격에 따른 불편함을 느꼇습니다.) 개발 부분에서는 프레임워크, 라이브러리, 프로젝트 리더급 개..
초기화가 복잡하다보면 초기화블럭을 통해 코드를 단순하게 짤 수 있는 장점이 있습니다. 초기화블럭은 클래스초기화블럭, 인스턴스초기화블럭 두 개가 있는데요, 차근차근 알아보겠습니다. 1. 클래스 초기화 블럭 클래스 초기화 블럭은 처음에 한 번만 실행되며, 일반 인스턴스 블럭에 static만 붙여주면 클래스 초기화 블럭이 완성됩니다. 2. 인스턴스 초기화 블럭 인스턴스 초기화블럭은 인스턴스를 생성할 때마다 수행되며, 블럭 내에 수행문장을 적어주면 블럭은 완성됩니다. public class Test { int test1; String test2; static { System.out.println("static 클래스"); } { System.out.println("인스턴스 테스트"); } Test() { Sys..