*JAVA* 59

[java] instanceof

참조변수 형변환 가능여부 확인에 사용. 가능하면 true 를 반환. (자기자신 이거나 조상에 대해) 조상 ↔ 자식 1 2 3 4 5 6 7 void dowork(Car c){ if (c instanceof (FireEngine)) { FireEngeine fe = (FireEngine)c; fe.water(); } } Colored by Color Scripter Car 클래스가 조상, FireEngeine이 자식 상속받은 객체라 가정한다. 메소드 dowork의 매개변수로는 Car타입 자기자신이나, Car타입의 자손들이 들어올 수 있다. if문에서 instanceof연산자는 'c가 가리키는 객체가 FireEngeine이냐?' 라고 묻는것이다. 참이면 (FireEngeine)으로 형변환해서 fe는 wate..

*JAVA* 2021.10.29

[java] 다형성

- 상속을 이용한 기술 - 여러가지 형태를 가질 수 있는 능력 - ★부모타입 참조변수로 자식타입 객체를 다루는 것★ Tv 클래스가 조상, SmartTv클래스가 Tv클래스를 상속받았을때 1 2 3 SmartTv s = new SmartTv(); // 참조변수와 객체의 타입 일치 Tv t = new SamrtTv((); // 조상 타입 변수로 자손타입 객체 참조 cs - 자식타입의 참조변수로 부모타입의 객체를 가리킬 수 없다. => 실제 사용할 수 있는(그 안의 변수, 메소드)외에 자식타입에만 있는 변수나 메소드는 부모타입으로 호출이 불가능 하기 때문 1 2 3 Tv t = new SamrtTv((); // OK SmartTv s = new SmartTv(); // Error cs Q. 참조변수 타입은 인스..

*JAVA* 2021.10.27

[java] 오버라이딩(overriding)

- 상속받고 있는 부모클래스의 메소드를 자식클래스에서 재정의(재작성) 하는 것 - 부모클래스가 제공하고 있는 메소드를 자식이 일부 고쳐서 사용하겠다는 의미 - 자식클래스의 오버라이드 된 메소드가 우선권을 가져서 호출된다. 오버라이딩의 성립조건 부모메소드의 메소드명과 동일 매개변수의 자료형, 갯수, 순서가 동일(매개변수명과는 무관) 반환형이 동일 부모메소드의 접근제한자와 같거나 공유범위가 더 넓어야 한다. (좁은 범위로 변경불가) Object 클래스의 toString()을 오버라이딩했다. 원래 toString() 메소드는 해당 객체의 풀클래스명 + @ + 해당객체의 주소값(16진수의 형태) 형태로 반환 해준다. 그러나 위에서처럼 자식객체가 다시 재정의 해주면 저위에 작성한대로 출력 결과물이 나오게된다. ※..

*JAVA* 2021.10.27

[java] 상속(inheritance)

매 클래스마다 중복된 필드, 메소드들을 단 한번 또 하나의 클래스(부모클래스)로 정의해둔 후 해당 클래스의 내용을 가져다 쓰는 개념 ★기존의 클래스를 이용해서 새로운 클래스를 만든다!★ SmartPhone 클래스는 Product를 상속한다. 상속의 특징 - 클래스간의 다중상속이 불가능하다.(단일 상속만 가능) Why? 부모가 여럿이면 똑같은 이름의 메소드가 여러부모에게 있을경우, 둘 중 어떤 메소드를 상속받아야 할지 몰라서 충돌이 발생하기때문 - 명시되어 있지는 않지만 모든 클래스는 'Object'클래스의 후손이다. (모든 클래스 : 내가 만든 클래스들, 자바에서 이미 제공하고 있는 클래스) => Object클래스에 있는 메소드를 호출해서 쓸 수 있음. => Object클래스에 있는 메소드가 마음에 안들..

*JAVA* 2021.10.27

[java] 객체 - 메소드(method)

메소드(Method) : 입력을 가지고 어떤 일을 수행한 다음에 결과물을 내놓는다! [표현법] 접근제한자 예약어 반환형 메소드이름(매개변수의자료형 매개변수이름) { 수행할 코드; return 반환값; } 생략 가능한 것 : 예약어, 매개변수, return문 부분(반환형이 void일 경우!) 반환형 : 반환할 값의 자료형 호출할때 인자값 => 매개변수의 자료형과 갯수가 일치해야함 반드시! 한번 정의해두고 필요할때마다 호출해서 사용 언제든! 반환형이 없는 메소드 : 출력문을 작성하는편 반환형이 있는 메소드 : 호출하는 부분에서 출력문을 작성

*JAVA* 2021.10.26

[java] 생성자(constructor)

메소드의 이름이 클래스이름과 동일하고 리턴자료형이 없는 메소드(반환형이 없는 메소드) 객체가 생성될 때 (new키워드 사용시) 호출이 되는 메소드이다. [표현법] public 클래스이름(매개변수(생략가능)) { 해당 생성자를 통해서 객체 생성시 실행하고자 하는 코드. } 참고) 메소드의 표현법 접근제한자 반환형 메소드이름(매개변수(생략가능)) { } 생성자를 작성하는 목적 1. 객체를 생성해주기 위한 목적 2. 객체를 생성 뿐만 아니라 매개변수로 전달된 값들을 바로 필드에 초기화할 목적 생성자의 종류 1. 매개변수가 없는 생성자 => 기본생성자 2. 매개변수가 있는 생성자 => 차이점 : 필드에 값을 초기화 할 수 있냐 없냐의 차이 생성자 작성시 주의사항 1. 반드시!!!!!!!!!!!!!!!!!!!! ..

*JAVA* 2021.10.26

[java] 클래스 변수(static 변수)와 상수 필드(static final)

필드 [표현법] 접근제한자 예약어(생략가능) 자료형 필드이름; 생성시점 : 프로그램 실행과 동시에 메모리의 static영역에 할당됨 소멸시점 : 프로그램 종료시 소멸됨 => 객체를 생성하지 않고 할당됨!! static "공유"의 개념이 강함! 프로그램 실행과 동시에 메모리영역에 공간을 만들어두고 그 안에 값을 공유해서 쓰자! 상수필드 (cf. 상수 : 변경하지 않을 변수) [표현법] public static final 자료형 상수필드이름 = 값; => 한번 지정된 값을 고정해서 쓴다. 그래서 무조건 초기화 해줘야함!!! => 예약어 순서는 상관없음 public final static으로 써도됨! static : 공유의 개념(재사용성) final : 한번 지정해놓고 변경하지 않겠다. (상수선언) 값이 변경..

*JAVA* 2021.10.25