컬렉션 프레임웍(Collections Framework) def: 데이터 그룹(群)을 저장하는 클래스들을 표준화한 것. 크게 3타입이 존재한다. List: 순서가 있는 데이터 집합 Set: 순서를 유지하지 않는 데이터 집합 Map: key와 value로 이루어진 데이터 집합 List와 Set은 공통점이 많아 추가적으로 Collection 인터페이스로 정의된다. (List와 Set이 Collection을 상속) ArrayList 기존의 배열과 다른 점 배열의 사이즈는 초기화 시 고정되기 때문에 변경이 불가하다. 하지만 ArrayList는 동적이어서 사이즈를 선언하지 않고 원소를 유동적으로 add, remove할 수 있다. 배열은 다차원이 가능하나 ArrayList는 불가하다. import java.util..
인터페이스(Interface) 인터페이스란 일종의 추상클래스인데, 추상클래스보다 추상화 정도가 높다. 추상클래스가 미완성 설계도라면 인터페이스는 기본 설계도이며, 다른 클래스 작성에 도움을 준다. 인터페이스에는 추상메서드와 상수만 올 수 있다. (일반 메서드와 상수가 아닌 변수는 올 수 없다) - 모든 멤버변수는 public static final 이어야하며 생략 가능 - 모든 메서드는 public abstract 이어야하며 생략 가능 예시 class FighterTest { public static void main(String[] args) { Fighter f = new Fighter(); } } class Fighter extends Unit implements Fightable { public ..
여러 타입의 객체를 배열로 다루기 예시 package com.Hazel; public class Main { public static void main(String[] args) { Buyer b = new Buyer(); b.buy(new TV()); b.buy(new Computer()); b.buy(new Audio()); b.summary(); } } class Product { int price; int bonuspoint; Product(int price) { this.price = price; bonuspoint = (int)(price / 10.0); } Product() {} } class TV extends Product { TV() { super(100); } public String..
Instanceof 참조변수의 인스턴스타입을 확인하며 boolean값을 반환. void work (Car c) { if(c instanceof FireEngine) { FireEngine fe = (FireEngine)c; fe.water(); ... } else if(c instanceof Ambulance) { Ambulance a = (Ambulance)c; a.siren(); ... } } Car 클래스의 참조변수 c가 어떤 인스턴스타입인지 확인하여 작업을 수행한다. 조상타입의 참조변수로는 실제 인스턴스 멤버들을 모두 사용할 수 없기 때문에 실제 인스턴스와 같은 타입의 참조변수로 형변환해야만 인스턴스의 모든 멤버를 사용할 수 있다. instanceof의 결과가 true면 그 타입으로 형변환해도 문..
다형성(polymorphism) def: 조상클래스 타입의 참조변수로, 자손클래스의 인스턴스를 참조할 수 있도록 한 것. // 예시 class TV { /* 내용 생략 */ } class captionTV extends TV { /* 내용 생략 */ } TV t = new CaptionTV(); // 조상 타입의 참조변수로 자손 인스턴스를 참조 captionTV ct = new TV(); // ERR!! 이 경우, t는 CaptionTV의 인스턴스이지만 TV타입의 참조변수이기 때문에 상속된 TV클래스에만 접근할 수 있다. 즉 TV클래스에서 정의되지 않고 captionTV에서만 정의된 인스턴스 멤버에는 접근할 수 없다. 그렇다면, captionTV타입의 참조변수로 정의하면 모든 멤버를 사용할 수 있을텐데 ..
제어자(modifier) 제어자는 클래스, 변수, 메서드 선언부에서 사용되며 부가적인 의미를 부여한다. 제어자의 종류 접근 제어자: public, protected, default, private(접근제어자는 한 번에 한 개만 가능) 그 외: static, final, abstract, native, syncronized 등 static static이 붙으면 클래스의, 공통적인 이라는 의미이다. 인스턴스 생성없이 호출할 수 있으며, static(클래식) 메서드 내에서는 인스턴스 멤버들을 직접 사용할 수 없다. final final이 붙으면 변경될 수 없다는 의미이다. 클래스에 붙으면 다른 클래스의 조상이 될 수 없다. 메서드에 붙으면 오버라이딩될 수 없다. 변수 앞에 붙으면 값을 변경할 수 없다. 일반적..
오버라이딩(overriding) def: 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 오버로딩과 오버라이딩은 명칭이 비슷하지만, 오버로딩은 기존에 없는 새로운 메서드를 만드는 것(new)이고 오버라이딩은 기존의 조상클래스의 메서드를 수정(modify)하는 것이다. Super def: 자손클래스에서 조상클래스로부터 상속받은 멤버를 참조하는 데 사용되는 참조변수. this처럼, 상속받은 멤버와 자신의 클래스에 정의된 멤버 이름이 같을 때에는 super로 구별할 수 있다. 예시1 : 조상클래스 변수를 super로 호출 class SuperTest { public static void main(String[] args) { Child c = new Child(); c.meth..
클래스 간의 관계 상속(Inheritance) class Parent { } class Child extends Parent { } 포함(Composite) class Circle { int x; // 원점 x좌표 int y; // 원점 y좌표 int r; } class Point { int x; int y; } // Point 클래스를 재사용하여 클래스 내에 포함시키는 경우 class Circle { Point c = new Point(); // 원점 int r; } 클래스 간 관계 중 어느 것이 적절할 지 판단하는 기준 상속관계 => ~은 ~이다. (eg. 스포츠카는 자동차이다.) 포함관계 => ~은 ~을 가지고 있다. (eg. 원은 원점을 가지고 있다.) 상속 및 포함 예시 class DrawSha..
메서드의 호출 다른 타입으로 호출했을 경우 class MyMathTest { public static void main(String args[]) { MyMath mm = new MyMath(); double result = mm.divide(5L, 3L); System.our.println(result); // prints 1.6666666666666667 } } class MyMath { double divide(double a, double b) P return a / b; } divide 메서드 선언 시에 패러미터는 double형으로 선언했는데, 실제 아규먼트는 long형으로 대입한 경우, double a = 5L;과 같아서, long형 값을 double형 변수에 저장하는 것과 같다. 이 경우 d..
기본형, 참조형 parameter 참조형 예시1 class Data { int x; } class ReferenceParamEx { public static void main(String[] args) { Data d = new Data(); d.x = 10; System.out.println(d.x); // prints 10 change(d); // pass d System.out.println(d.x); // After change, prints 1000 } static void change(Data d) { d.x = 1000; } } change메서드의 매개변수가 참조형이라서 값이 아니라 값이 d가 저장된 주소를 change메서드에게 넘겨주기 때문에, 메서드를 호출한 뒤 d.x값이 변경된다. 참조..
선언위치에 따른 변수의 종류 변수 종류는 세 가지이다. 클래스변수(class variable) 인스턴스변수(instance variable) 지역변수(local variable) 변수의 종류 선언위치 생성시기 클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 클래스 영역 인스턴스가 생성될 때 지역 변수 메서드 영역 변수 선언문이 수행될 때 클래스 변수는 모든 인스턴스가 공통된 저장공간을 공유한다. 한 클래스의 모든 인스턴스들이 같은 값을 가진다. (자바스크립트의 프로토타입 같다.) 앞에 static이 붙는다. 클래스 변수는 객체생성 없이 클래스이름.클래스변수로 직접 사용가능하다. 인스턴스 변수는 독립적인 저장공간을 가지므로 서로 다른 값을 가진다. 인스턴스마다 고유한 상태를 가질 수 있..
this() 다른 생성자를 통해 생성자를 호출하는 경우 package day6; class Book { String title; String author; int price; // constructor Book() { this("자바의 정석", "남궁성", 30000); // 다른 생성자를 통해 생성자를 호출하는 경우 this()문이 맨 첫줄이어야만 한다. System.out.println("자바의 정석 객체 생성"); } Book(String title, String author, int price) { this.title = title; this.author = author; this.price = price; } // print method void getBookInfo() { System.out...
Getter and Setter 예시 1 class Member4 { int i; String name; String account; String passwd; private int birthyear; void setBirthyear(int birthyear) { if(birthyear < 0) { return; } this.birthyear = birthyear; } int getBirthyear() { return birthyear; } } 예시 2 public class Time { private int hour; private int minute; private float second; // Getter public int getHour() { return hour; } public int get..
Continue continue문은 반복문 내에서 사용될 수 있다. break는 그 조건에 충족하면 loop를 탈출하라는 의미이지만, continue는 반대로 조건에 충족하면 다시 loop를 돌라는 의미이다. 이미 반복문을 쓴 상황에서는 loop가 되는데 왜 다시 loop를 돌게 하는 continue 구문이 필요한지 의문스러울 수 있지만, continue는 조건을 충족하면 그 밑의 코드는 수행하지 않고 다시 loop를 돈다. Scanner sc = new Scanner(System.in); int i; while(true) { i = sc.nextInt(); if(i > 0) { System.out.println("Loop!"); continue; // 만약 입력된 값이 양수일 경우 "Loop 종료"를 ..
객체지향언어 객체지향언어의 특징 코드의 재사용성이 높다.(기존의 코드를 이용하여 새로운 코드를 작성) 코드의 관리가 용이하다. (코드의 관계를 이용하여 쉽게 코드를 변경) 신뢰성이 높은 프로그래밍이 가능하다.(제어자와 메서드를 사용해 데이터를 보호, 코드의 중복을 제거) 클래스와 객체 클래스: 객체를 정의해 놓은 것. 객체를 만들기 위한 설계도 같은 것. JDK(Java Development Kit)는 유용한 클래스(JAVA API)를 기본적으로 제공한다. 인스턴스: 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate)라고 하며 클래스로부터 만들어진 객체를 클래스의 인스턴스(instance)라고 한다. 인스턴스의 생성 Tv t; // 클래스명 변수명; t = new Tv(); //..
- Total
- Today
- Yesterday
- useEffect
- 인스턴스
- 개발 공부
- Prefix Sums
- 깃
- 포인터 변수
- Java
- Redux
- react
- til
- oracle
- 알고리즘
- linkedlist
- GIT
- CSS
- 제네릭스
- package.json
- SQL
- c언어
- rxjs
- getter
- 리덕스
- Session
- this
- youtube data api
- 자바
- JavaScript
- jQuery
- Conflict
- Data Structure
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |