다형성(Polymorphism) : 부모 클래스의 참조변수로 자식 클래스의 객체를 다룰 수 있는 성질 (역은 성립하지 X !!) 상속관계 간의 형변환만 가능하다. 자손타입 -> 부모타입 형변환 (UpCasting) : 자동 형변환 (암묵적 형변환) 부모타입 -> 자손타입 형변환 (DownCasting) : 강제 형변환 (명시적 형변환) ex) public class Example { public static void main(String[] args) { Fruit fr = new Fruit(); Kiwi ki = new Kiwi(); fr = ki; // 자동 형변환 ki = (Kiwi)fr; // 강제 형변환 fr = null; ki = (Kiwi)fr;// ki는 null을 가리킴 ki.answer..
[인터페이스] 구현방식 : class 클래스명 implements 인터페이스명 1. 클래스를 작성하는 데에 도움을 주기 위해 사용한다. (추상클래스와 비슷하지만 추상화 정도가 더 높음) 2. 추상 메소드와 상수만을 멤버로 갖는다. 3. 인터페이스 내의 메소드는 항상 public이며 abstract 키워드가 생략되어 있다. -> 메소드를 인터페이스 외부에서도 구현할 수 있으려면 모두가 볼 수 있는 public으로 지정해야 함. 또한 인터페이스 내의 메소드는 항상 추상 메소드여야하므로 써있지 않더라도 abstract 가 생략되어 있음. 4. 여러 개의 인터페이스를 동시에 상속(extends, implements) 받을 수 있다. (인터페이스는 콤마로 구분) 5. 인터페이스 간의 상속 시에는 implement..
[abstract] 1. 추상클래스는 다른 클래스를 작성하는 데 도움을 주기 위해 작성된다. 2. 추상클래스를 상속받은 클래스는 추상 메소드를 반드시 오버라이딩 해야한다. 3. 메소드를 선언만 할 것이면 메소드 앞에 abstract 키워드를 붙여야 한다. 4. abstract 메소드를 하나라도 가지는 클래스 앞에도 abstract 키워드를 붙여야 한다. 5. abstract 키워드는 변수에는 사용할 수 없다. [final] 클래스에 붙이면 => 해당 클래스를 상속하는 것이 불가 메소드에 붙이면 => 해당 메소드를 오버라이딩하는 것이 불가 변수에 붙이면 => 상수형 변수 (final 키워드를 변수에 붙이는 경우 보통 final public static형으로 쓴다.)
생성자를 어떤 형태로든 구현했다면 기본(default) 생성자는 자동으로 생성되지 않는다. [this] : 자신 클래스의 객체에 접근할 때 사용한다. ex) Class Book { String Title; String Author; public Book(String Title, String Author)// 생성자 { Title = Title;// ? Author = Author;// ? } } 위와 같은 코드를 작성했을 때, Title = Title; 과 Author = Author; 부분에서 어떤 것이 Book 클래스의 멤버 변수를 지칭하고, 어떤 것이 생성자의 인자를 지칭하는 것인지 알 수 없어 혼돈이 생겨 원치 않는 결과가 나온다. 이런 경우 this 키워드를 사용한다. this.Title = T..
[System.in] 1. System.in은 java.io.*; 를 import한다. 2. System.in을 이용해 값을 입력받을 때, 잘못된 값을 입력받은 경우를 대비해 항상 예외 처리를 해줘야 한다. 예외 처리 구문이 없으면 오류가 발생한다. 따라서, try/catch문을 사용하거나 시스템이 알아서 예외를 처리하는 IOException을 사용해 예외 처리를 해준다. 3. System.in.read 메소드는 인자가 없으면 입력한 값을 하나씩 읽어 들여 아스키 값으로 반환한다. ex1) 한 글자를 입력 import java.io.*; public class IOEx { public static void main(String[] args) throws IOException { int i = System..
1. main 메소드를 이용한 입출력 public class InputOutputEx { public static void main(String[] args) { System.out.println(args.length); } } 배열 args의 크기를 출력하는 코드를 작성한다. 그런 다음 cmd 창을 켜서 해당 클래스가 위치하는 디렉토리로 이동한다. C:\Users\a\Desktop\eclipse-workspace\BeginJava\bin>java InputOutputEx 그리고 해당 클래스를 java로 실행 시키면 0이 출력된다. java InputOutputEx 뒤에 인자가 없기 때문에 main 메소드의 인자 args에 아무것도 전달이 되지 않아 크기가 0으로 출력된 것이다. C:\Users\a\De..
[자료형] 1. 실수형 float ft1 = 1.234; (X) 자바의 실수 기본형은 double이므로 1.234는 double형으로 인식된다. 하지만 그 값을 담는 ft1이라는 변수가 float형이기 때문에 범위가 작은 float형에 double형의 값을 저장하려 하면 오류가 발생한다. 그러므로 이 경우 float ft1 = 1.234f;로 수정해야 한다. float ft2 = 1234; (O) 1234는 정수형이고, 실수형은 정수형보다 큰 범위를 갖기 때문에 실수형은 정수형의 값을 담을 수 있다. 2. 문자형 C/C++에서는 아스키 코드를 사용하여 char형이 1byte였지만, Java에서는 유니코드 체계를 적용하여 char형이 2byte이다. ※ 16진수로 표현하기 : \u0041 = 4*16^1 ..