enum 상수를 간편한 선언으로 한정된 데이터를 관리 가능하나 컴파일 시점에서 오류가 나면 발견하기 어려워 범위 내의 값인지 판별하는 작업이 필요한데 이때 열거형(enum type)이 필요하다 [접근제한자] enum 열거타입명 { // 중괄호 내에는 값을 갖는 상수 이름만 나열(별도의 값을 지정하지 않음) 상수, 차례대로, 나열;// 대문자로 쓰임, 각각 하나의 객체 } - 클래스, 인터페이스 정의 문법과 유사하나 중괄호 내에는 상수로 사용될 이름만 지정 - 지정된 상수 외 다른 값은 전달이 불가능하다. public class Ex2 { public static void main(String[] args) { Ex2 ex2 = new Ex2(); //compareEnum();// static 이라서 안됨..
서브쿼리 쿼리 구문 안에 또 다른 쿼리 구문이 포함된 형태로 메인쿼리보다 먼저 실행된다. - 안에 있는 inner query에서 바깥 main query = outer query 순으로 이해 => 서브쿼리를 먼저 실행하고 그 값으로 메인쿼리를 돌려달라! - group by 절 제외한 쿼리 구문 어디든 작성 가능, where절이나 having 절에 많이 사용된다. employees 테이블에서 사원들의 employee_id, last_name, salary를 출력하되 Abel보다 급여를 더 많이 받는 사원만 출력하고 싶을 때! SELECT employee_id, last_name, salary, department_id FROM employees WHERE salary > (Abel의 급여); Abel의 급..
interface - 순수 추상 메서드, 상수를 멤버로 가질 수 있다. - 상수 선언만 가능하며 인스턴스나 정적 멤버 선언은 할 수 없다. - 다중 상속(extends), 다중구현(implements) 가능 - 생성자가 없으며 객체 생성이 불가하다. (추상클래스는 생성자 가능하나 객체 생성 불가) interface Interface { // 상수만 가능 // 추상메서드만 가능 } - 멤버변수, 매개변수, 로컬변수 타입으로 선언 가능 class TV implements RemoteCon { @Override public void turnOn() { System.out.println("TV On"); } @Override public void turnOff() { System.out.println("TV O..
추상 클래스 객체를 생성할 수 없는 클래스, new 연산자를 이용한 생성자 호출이 불가능하다. - 추상메서드를 가질 수 있으나 상속받는 서브클래스에서 반드시 오버라이딩 해야한다. (구현의 강제성을 부여해서 코드의 통일성이 향상) - 추상메서드, 일반메서드, 생성자, 멤버변수를 가질 수 있음 - 상속으로 서브클래스에서 사용 가능, 업캐스팅으로 다형성 활용 가능 abstract method 추상 메서드. - 메서드의 구현부가 없는 추상메서드는 실행할 코드가 없기 때문에 외부에서 호출 불가 - 추상 메서드를 갖는 클래스는 반드시 추상 클래스로 선언해야한다! (반대의 경우는 가능하다) [접근제한자] abstract [리턴타입] 메서드명 ([매개변수...]); public class Ex1 { public sta..
round(숫자, 반올림할 자리) 숫자를 반올림할 자리까지 반올림, 반올림할 자리 생략 시 일의 자리 반올림 select round(47.815, 2), round(47.815, 0), round(47.815, -1); -- 47.82, 48, 50 truncate(숫자, 버림할 자리) 숫자를 버림할 자리까지 남기고 버림 123.45 => 1(-2 자리) 2(-1 자리) 3(0 자리) 4(1 자리) 5(2 자리) select truncate(47.815, 2), truncate(47.815, 0), truncate(47.815, -1); -- 47.81, 47, 40 mod(숫자1, 숫자2) 숫자1을 숫자2로 나눈 나머지를 반환해주는 함수 select mod(243, 10), 243 mod 10, 243..
레퍼런스 형변환 - 레퍼런스 타입끼리의 형변환(상속 관계에서만 사용 가능) - 레퍼런스(변수)를 사용하여 다른 타입의 인스턴스(객체)를 참조하기 위해 변환 업캐스팅 서브클래스의 인스턴스를 슈퍼클래스 타입으로 변환, 자동형변환이 일어난다 다운캐스팅 슈퍼클래스의 인스턴스를 서브클래스 타입으로 변환, 명시적(강제)형변환을 해야한다. 실행시점에서 오류 발생할 수 있음. 사실상 업캐스팅이 이전에 되어야만 가능하다. public class 연습 { public static void main(String[] args) { A a = new A(); B2 b2 = new C4();// 업캐스팅 a = b2;// 업캐스팅 b2 = (B2)a;// 다운캐스팅 } } class A {} class B1 extends A{}..
super 인스턴스의 주소를 저장하는 참조변수 - this는 자신의 인스턴스 주소 저장, super는 부모의 인스턴스 저장 - 서브클래스에서 슈퍼클래스의 은닉된 멤버에 접근할 수 있다. 1. 변수명만 지정했을 경우 현재 선언된 메서드 내에서 먼저 탐색 > 자신의 멤버변수에서 탐색 > 부모의 멤버변수에서 탐색 2. this.변수명을 지정했을 경우 자신의 멤버변수에서 탐색 > 부모의 멤버변수에서 탐색 3. super.변수명을 지정했을 경우 부모의 멤버변수에서 탐색 class 할아버지 { String name2 = "할아버지"; } class 아버지 extends 할아버지 { String name = "아버지"; } class 나 extends 아버지 { String name = "나"; public void..