Hello World

I can do it!
Java에서 인터페이스(interface)는 객체의 사용 방법을 정의한 타입이다. (클래스와는 다르다.) 인터페이스는 객체의 교환성을 높여주기 때문에 다형성을 구현하는 매우 중요한 역할을 한다. 인터페이스를 사용하여 인스턴스로 만들어진 객체를 구현객체 라 하며 인스턴스로 만들어진 클래스를 구현 클래스라고 한다. ex) 인터페이스 에서 사용가능한 선언자 상수필드(Constant Field),추상메소드(Abstract Method),디폴트메소드(Default Method),정적 메소드(Static Method)
사전적 의미로 추상(abstract)는 실체 간에 공통되는 특성을 추출한 것을 말한다. 아래 그림 설명 ex) 추상 클래스의 용도 : 실체 클래스를 설계하는 사람이 여러 사람일 경우, 실체 클래스마다 필드와 메소드가 제각기 다른 이름을 가질 수 있어 이를 예방하기 위해 추상 클래스를 사용한다. 추상 클래스에서 설계시 추상클래스는 타입으로 가능하나 객체화는 불가능하다!! Class 명 앞에 abstract 키워드를 붙여야 한다. 추상 메서드는(ex : public abstract void sound(); ) 추상클래스에만 선언할 수 있다. 추상 클래스에서 설계된 추상메서드 내용은 없어야 한다. 추상클래스를 상속받는 클래스는 추상클래스의 메서드를 무조건 포함해야한다.(오버라이드) 추상 클래스에 일반 메서드 ..
자식 타입이 부모 타입으로 자동 변환하면, 부모 타입에 선언된 필드와 메소드만 사용 가능하다는 제약 사항이 따른다.ㅠ 만약 자식 타입에 선언된 필드와 메소드를 꼭 사용해야 한다면 강제 타입 변환을 해서 다시 자식 타입으로 변환한 다음 자식 타입의 필드와 메소드를 사용 할 수 있다. Java코드 ex) 부모타입의 변수가 부모 객체를 참조할 경우 자식 타입으로 변환할 수 없다 그렇다면 어떤 객체가 어떤 클래스의 인스턴스인지 확인하려면 instanceof 연산자를 사용할 수 있다. boolean result = 좌항(객체 or 인스턴스) instanceof 우항(타입) 출력 : method1 (Parent객체가 Child타입으로 변환이 불가 하여 False)- Child로 변환되지 않음
앞서 필드의 다형성을 공부할때 자동차가 달릴때 타이어의 교체로 예를 들었으며 Java로 코드를 작성 해 보았다. Tire클래스 : Tire클래스를 부모로 사용하는 자식 클래스(한국Tire,금호Tire) Car클래스 : Tire클래스를 (부품으로) 사용하는 클래스 CarExample.java main실행 클래스 - 간단히 요약하자면 main 실행 후 Car 클래스를 객체로 하여 각 타이어의 위치가 최대치를 초과할경우 (한국Tire,금호Tire) 클래스로 (교채) 대입 하는 소스 코드 였다. 핵심 소소코드 Car클래스에서 각 타이어(앞 왼 오른쪽 타이어,뒤 왼 오른쪽 타이어)객체를 하나의 배열로 만들어 리팩토링해보기!! Tire타입을 배열로 선언하여 여러 객체를 배열에 넣어 관리 할 수 있다. 아래 코드를 ..
1.다형성의 자동형변환 : 자식 클래스(객체)에서 부모 타입을 사용할 수 있다. 하지만 자식 클래스에서 설계된 메서드는 부모타입을 가진 자식클래스가 사용불가 하다. 아래 JAVA 코드를 봐보자 ex) 2.필드의 다형성 : 필드의 타입은 변함이 없지만, 실행 도중에 어떤 객체를 필드로 저장하느냐에 따라 실행결과가 달라질 수 있다. 이것이 필드의 다형성이다. (실생활 자동차 타이어로 예를들자면 타이어 펑크시 다른 타이어로 교체 하는것과 같다고 볼 수 있다.) Java코드를 봐보자 ex) 3.매개변수의 다형성 : 메서드의 매개변수에 자식타입의 객채를 대입할 수 있다 Java코드를 봐보자 ex) 필드,매개변수 다형성에 대한 공통점은 부모타입을 상속받은 자식타입 객체가 부모타입에 대입도 문제가 없다는것을 보여준다..
다형성이란 간단하게 이야기해 다양한 성태 성질을 이야기 한다 고양이과에는 형태가 조금씩 다른 여러가지인 객체가(고양이,호랑이등) 있는것처럼 그리고 호랑이는 고양이과에 속하지만 고양이과는 호랑이가 될 수 없다 Java에서도 동일하게 적용 아래 Java 코드를 봐보자
현실에선 부모가 자식에게 물려주는 행위를 말하는것처럼 Java에서 부모클래스(SuperClass)가 자식(SubClass)에게 부모클레스멤버(인스턴스와메서드)를 물려주는것을 말한다. 상속 받는 키워드는 extends ex) SuperClass(부모클래스) 설계코드 SubClass(자식클래스) 설계코드 * 상속 받는 과정에서 fly메서드는 Override(함수 재정의)되었다 * @Override 키워드는 어노테이션이라 하며 컴파일러 한테 힌트를 주는것이다. * 부모클래스의 인트턴스 접근시 super 키워드를 사용한다. 또한 부모클래스로부터 상속받을시 부모클래스 생성자도 같이 호출해줘야 한다.
접근제어자 Class 설계시 특정 데이터를 보호하기 위해 해당 필드의 접근하지 못하도록 막아야 한다. 이럴때 우린 접근제어자를 통해 접근하지 못하게 막을수 있다. Protected 를 조금더 자세히 설명 하자면 다른 Package(패키지)에 소속된 클래스는 default와 마찬가지로 사용이 불가 하다 그러나 다른 패키지의 부모클래스로부터 상속 받을시 다른 패키지에 포함된 클래스여도 사용이 가능하다. 캡슐화란 클래스 설계시 필드는 값을 수정하지 못하게 숨기고 메소드만 노출 시키는 것을 뜻한다. ex) 빨간 부분이 필드(속성) Java 코드 입력시 ex)
package에 대해 간략히 설명하자면 Class들의 묶음 이며 다른 package에 있는 Class에 접근시 import해줘야 접근이 가능하다. ex)
앞서 포스팅했듯 Class란 객체(속성과 기능)의 인스턴스(힙영역값에 대한) 설계도라고 간단히 요약하고 실제 Java에서 활용예를 생각하여 클래스를 구현해 보자. 인스턴스 멤버란 (인스턴스 필드, 인스턴스 메서드의 묶음이다.) Java로 전사의 모험이란 아주 간단한 Gameapp을 만들어보았다. 1. Class(클래스) : warrior - Class의 구성 Instance variable Or Filed(인스턴스 변수 또는 속성) : power(힘), intt(지능), dex(민첩), name(이름) Constructor(생성자) : warrior (파라미터 값으로 이름 지정 후 인스턴스 초기화 power =10, intt = 5, dex =5) Method(기능) : Attack(속성 값인 힘의 수치..
병아리개발자Mr Jo
'web_배우고익히고' 카테고리의 글 목록 (13 Page)