반응형

JAVA 55

[Java] 상수(Constant), 열거형(enum type)

/* * 상수(Constant) * - 변하지 않는 데이터 = 변하지 않는 데이터를 저장한 변하지 않는 변수 * - 보통 클래스 내에서 상수를 선언 시 public static final 형태로 선언 * 1) public : 누구나 접근 가능 * 2) static : 클래스 로딩 시 함께 로딩되어 인스턴스 생성과 무관하며, * 클래스 하나 당 하나만 생성괴도, 모든 인스턴스가 공유함 * => 클래스명만으로 접근 가능(클래스명.변수명) * 3) final : 데이터 변경 불가 = 상수 * */ import java.util.Calendar; public class Ex3 { public static void main(String[] args) { //상수(constant) //-변하지 않는 데이터 = 변하..

JAVA 2021.11.01

[Java] abstract

static을 쓰는 경우 클래스명(참조변수)로 메서드를 호출할 수 있다 /* * 추상메서드(Abstract Method) * - 메서드 바디(= 구현부, {})가 존재하지 않는 메서드 = 미완성 메서드 * => 실행 코드가 없으므로 실행(호출)될 수 없는 메서드 * - 메서드 선언부 접근제한자 뒤에 abstract 키워드를 붙여서 선언 * => 바디가 없으므로 메서드 마지막을 세미콜론(;)으로 마무리 * - 메서드 실행 코드(바디)가 없으므로 외부에서 호출되면 안되는 메서드 * * * [접근제한자] abstract 리턴타입 메서드명([매개변수...]); * ------------------------------------------------------------- * ..

JAVA 2021.11.01

[Java] 다형성 연습

다형성 활용 방법 1 슈퍼클래스의 배열에 서브클래스의 인스턴스를 저장 메서드 생성 후 슈퍼클래스의 배열을 파라미터로 줌, for문을 통해 오버라이딩 된 메서드를 호출할 수 있다 이미 다형성이 적용된 배열을 메서드 파라미터로 전달 ⇒ 메서드명(슈퍼클래스의 배열변수명); package practice; public class SelectMajor{ public static void main(String[] args) { Major[] mArr = {new English(),new ComputerScience(), new Law()}; //메서드 호출 MyStudy(mArr); //reading an English novel //creating a website //reaserching for some inf..

JAVA 2021.11.01

[Java] 다형성(Polymorphism)

다형성(Polymorphism) - 하나의 데이터타입(참조변수)으로 여러 인스턴스를 참조하는 특성 - 어떤 인스턴스를 업캐스팅하여 슈퍼클래스 타입 변수로 다루면 하나의 슈퍼클래스 타입으로 여러 서브클래스 타입 인스턴스를 다룰 수 있음 업캐스팅을 하기 위해서는 다운 캐스팅 필수 파라미터 생성자는 인스턴스 생성할때 초기화 슈퍼클래스에 파라미터 생성자가 있으면 서브 클래스에서 파라미터 생성자를 만들때 super를 통해서 슈퍼클래스의 파라미터를 가져온 후 자신의 멤버변수는 this로 초기화한다 getter로 변수를 리턴한다 코드의 중복을 막기 위해 중복되는 값은 오버라이딩으로 처리한다 public class Ex2 { public static void main(String[] args) { // Circle 인..

JAVA 2021.11.01

[Java] 상속(inheritance) - 동적 바인딩

/* * 동적 바인딩 * - 상속 관계에서 업캐스팅 후 메서드를 호출할 때 * 컴파일(번역) 단계에서의 실행 대상과, 실제 실행 단계에서의 * 실행 대상이 달라지는 것 * - 참조 변수의 타입과 무관하게 실제 인스턴스의 메서드를 실행하게 됨 */ public class Ex { public static void main(String[] args) { //슈퍼클래스 타입 인스턴스 생성 Parent p = new Parent(); p.parentPrn(); // 서브클래스 타입 인스턴스 생성 Child c = new Child(); c.ChildPrn(); c.parentPrn(); System.out.println("---------------------------------------"); // 서브클래..

JAVA 2021.10.31

[Java] instanceof

/*instanceof 연산자 * - 좌변의 객체(참조변수)가 우변 클래스의 타입인지 판별하는 연산자 * - 판별 결과가 true 이면 형변환이 가능한 관계(업캐스팅 or 다운캐스팅) * 판별 결과가 false 이면 절대로 형변환 불가 * - 우변의 클래스 타입과 같거나 우변 클래스 타입의 자식 타입 모두 가능 * - A is a B = A instanceof B * - 판별 결과를 boolean 타입 변수에 저장하거나 * if문에 판별하는 문장을 직접 사용 가능 * * * if(A instanceof B) { // A 는 참조변수(객체), B 는 클래스명(타입) * // 형변환이 가능한 관계이므로 변환 수행 * } else { * // 절대로 형변환이 불가능한 관계이므로 변환 수행 X..

JAVA 2021.10.31

[Java] 레퍼런스 형변환(Up Casting, Down Casting)

/* * 레퍼런스 형변환 * - 어떤 객체(인스턴스)를 다른 타입으로 변환하는 것 * - 참조형 데이터타입간의 변환 * - 반드시 상속 관계가 전제되어야 함 * (= 상속 관계가 아닌 타입끼리의 형변환은 허용되지 않음 = 오류 발생) * - 슈퍼클래스타입 서브클래스타입 * - 묵시적 형변환(업캐스팅, Up Casting)과 * 명시적 형변환(다운캐스팅, Down Casting)으로 구분 * * 1. 업캐스팅(Up Casting) * - 슈퍼클래스 타입 레퍼런스로 서브클래스 인스턴스를 참조하는 것 * = 서브클래스의 인스턴스를 슈퍼클래스 타입으로 변환하는 것 * - 컴파일러에 의해 자동 형변환이 일어남(= 묵시적 형변환) * = 별도의 형변환 연산자를 사용하지 않고도 변환 가능함(생략 가능) * - 참조 ..

JAVA 2021.10.31

[Java] final 키워드

/* * final 키워드 * - 대상의 변경이 불가능하도록(변경의 최종) 지정 * 1. 변수에 final 이 붙을 경우 * => 변수 값 변경 불가 = 저장되어 있는 값만 사용 가능 * = 상수로 취급됨 * => 일반 변수와 구별하기 위해 이름을 보통 대문자 사용하며, * 단어 사이의 구분은 언더스코어(_) 를 사용함 * ex) MAX_NUM * => 반드시 초기화 필수 * 단, 초기화를 수행하지 않은 상수를 blank final 상수라고 하며 * 생성자를 통해 초기화하면 사용이 가능함 * => 목적 : 객체마다 다른 상수 값을 갖기 위함 * * 2. 메서드에 final 이 붙을 경우 * => 메서드 변경 불가 = 오버라이딩 금지 * 3. 클래스에 final 이 붙을 경우 * => 클래스 변경 불가 =..

JAVA 2021.10.31

[Java] 상속에서의 생성자

/* * * - 생성자는 상속되지 않음 * => 생성자 이름은 자신의 클래스 이름과 동일한데 * 만약, 상속받을 경우 생성자 이름이 부모 클래스 이름이므로 * 생성자 작성 규칙에 위배됨 * - 서브클래스의 인스턴스 생성할 때는, 자동으로 슈퍼클래스의 인스턴스를 * 먼저 생성한 후 서브클래스의 인스턴스가 생성됨 * => 이 때, 서브클래스 생성자에서 슈퍼클래스 기본생성자를 자동 호출 * => 만약, 슈퍼클래스에 파라미터 생성자만 존재할 경우 * 서브클래스 생성자에서 컴파일 에러가 발생하게 된다! * * * - 슈퍼클래스의 생성자를 명시적으로 호출할 때 사용 * => 생성자 this() 와 사용 방법 및 목적은 동일함 * - 기본 문법 : super([데..

JAVA 2021.10.31

[Java] 멤버변수에 대한 오버라이딩,레퍼런스 super

/* * 메서드 오버라이딩 및 멤버변수에 대한 오버라이딩 시 * 슈퍼클래스의 멤버변수와 메서드는 은닉되어 보이지 않게 된다! * => 즉, 서브클래스의 인스턴스를 통해 슈퍼클래스의 멤버에 접근 불가능! * * * - 슈퍼클래스의 멤버에 접근하기 위한 키워드(= 레퍼런스 변수) * - 레퍼런스 this 와 마찬가지로 서브클래스 인스턴스를 생성할 때 생성되며 * 이 때, 자동으로 생성되는 슈퍼클래스의 인스턴스 주소를 저장하는 변수 * - 주로, 오버라이딩에 의해 은닉된 멤버변수 또는 메서드 접근 시 사용 * - 기본 문법 : super.부모의멤버변수 또는 super.부모의메서드() */ public class Ex { public static void main(String[] ar..

JAVA 2021.10.31
반응형