분류 전체보기
-
상속 관계에서의 생성자JAVA/상속 2020. 10. 10. 23:26
상속 관계에서의 생성자 - 자식 클래스 객체 생성시 기본 생성자를 호출하면 부모클래스도 기본생성자가 호출된다. - 부모클래스에 파라미터가 있는 생성자가 존재하면 부모클래스의 기본생성자는 자동으로 생성되지 않음으로 명시적으로 생성자를 선언해야 한다. - 자식 클래스 객체 생성시 부모클래스의 생성자가 먼저 호출되고 자식 클래스의 생성자가 호출된다 ☞ 부모클래스는 생성자의 쓰임과 관련 없이 디폴트 생성자를 선언할 것을 절대 권장. 예: public Parent(){ } - 부모 클래스의 생성자는 생략 가능하나 권장이 아니다. 1. 기본 생성자가 명시되지 않은 경우 자동으로 기본 생성자가 생성되어 객체가 만들어 진다. 프로그램 실행결과 소스 파일 2 -(1). 상속관계에서는 부모클래스의 생성자가 먼저 실행된다...
-
객체 형변환JAVA/상속 2020. 10. 10. 23:04
객체 형변환 - 상속 관계에서는 부모자식간에 형변환이 가능하다. - 상속관계에서는 좌측에 부모클래스가 오고 우측에 자식 클래스가 올 수 있다. - 실제로 메모리상에 생성되는 객체는 자식 클래스 객체가 생성되고 타입만 부모클래스가 된다 - 자식 클래스에 등록된 메소드는 호출할 수 없다. 따라서 기본적으로 부모클래스에 있는 메소드만 호출 가능하다.(타입에 우선한다.) - 부모 클래스 타입을 자식클래스로 강제 형변환 하면 자식 클래스의 메소드를 호출 할 수 있습니다. - 일반적으로 부모클래스의 메소드를 호출하려면 부모클래스 타입으로, 자식클래스의 메소드를 호출하려면 자식 클래스 타입으로 형변환하여야 한다.(★) . 예외: 오버라이딩 시에는 부모클래스 타입이더라도 자식클래스의 메소드가 호출된다. - 모든 클래스..
-
Method OverridingJAVA/상속 2020. 10. 10. 22:49
Method Overriding개념 - 상속관계의 클래스에서 상위 클래스에 선언된 메소드를 자식 클래스에서 다시 선언하는 경우를 말한다.. 이런 경우 기본적으로 부모클래스의 메소드는 무시된다. - 같은 메소드가 부모와 자식에게 모두 선언되어 있으나 메소드의 내용은 다르다. - 부모와 자식 Class간에 메소드의 원형이 같아야 한다. . 원형(Stub): 메소드명, 인수의 갯수, 인수의 데이터 타입, return 타입 - 부모클래스가 메소드를 상속해주나 자식 클래스는 자신이 구현한 메소드를 우선하여 이용한다. 따라서 상속이 무시된다. - 부모클래스의 메소드 기능을 유지하면서 상황에 따라 자식클래스의 변형된 기능을 사용하고 싶은 경우 사용하며 다형성 구현의 핵심 원리이다. - 메신저는 버젼 별로 기능이 틀리..
-
상속의 개념JAVA/상속 2020. 10. 10. 22:33
상속(Inheritance)의 개념 - 상속의 경우 속성을 상속하는 경우 보다는 메소드를 상속하기위해 많이 사용되며, 부모 클래스의 기능을 확장하는데 부모클래스를 수정하지 않고, 부모에 구현된 로직을 사용하면서 안정적으로 클래스의 기능을 확장 할 수 있는 기법을 제공한다. - 상속을 계속적으로 하게 될 경우 가장 아래의 클래스는 부모로부터 많은 메소드를 상속 받음으로 매우 많은 기능을 사용할 수 있다. - 무분별한 상속은 모바일 프로그램의 경우 심각한 속도 저하를 가져올 수 있다. 또한 유지보수 시에 Application 분석을 어렵게 할 수 있다. - 상속은 한번에 하나의 클래스에서만 가능, C++의 경우는 2개이상의 클래스를 상속하는것이 가능하다. - 형식: class 자식 Class(Sub Clas..
-
API를 활용한 파티고라스의 정리를 이용한 거리 구하기Algorithm with C/Math 2020. 10. 10. 12:30
[그림출처 : 네이버지식백과] 게임에서, 플레이어와 에너미와의 거리를 구하기 위해서, 위의 피타고라스 정리를 이용해서 거리를 구할 수 있다. 위의 내용을 가지고 API로 구현해보자. 먼저 변수부터 보자. 변수들은 모두 전역 변수이다. x,y가 플레이어의 좌표이며, x_2와 y_2는 에너미의 좌표이다. 우리가 구할 것은 플레이어와 에너미의 거리이다. 플레이어와 에너미의 거리를 담는 변수는 Distance이다. sqrtf함수는 루트함수이다. 점을 딱히 표현할 방법이 없어서, 원으로 표기를 한다. (x,y)는 원의 좌측상단점이며, (x+diameter, y+diameter) 는 원의 우측하단점이 된다. 아래의 함수는 각 방향 키의 입력에 따라 좌표값을 업데이트 한다. 아래에서 아래 방향키가 눌리면 y값이 작아..
-
Thread와 자원 공유 - 멤버필드, static필드JAVA/Thread 2020. 10. 8. 18:25
Thread와 자원 공유 - 멤버필드, static필드 - 같은자원(같은 객체의 멤버필드)을 여러개의 쓰레드가 공유할 수 있다. - 문제점발생 : 좌석예약, 계좌입출금 등등 - 문제점은 동기화 처리(synchronized)로 해결할 수 있다. 멤버 필드 예제 프로그램 실행결과의 일정부분 소스 파일 static 필드 예제 아래의 프로그램에서 MemberPrint클래스의 필드 i가 static이고 prviate임을 기억하자. 아래의 프로그램이 100번 도는 이유는 static 때문이다. 실행결과를 참고하자. 실행결과를 보면 필드 i가 static으로 선언이 되어있으면 MemberPrint의 객체들이 모두 i값을 같이 참조를 해야한다. 그런데 프로그램 실행결과를 보면 스레드 A,B,C모두 i가 0일 때를 실행..
-
ArrayListJAVA/Collection Framework 2020. 10. 8. 17:53
List - 순서가 있고 중복이 가능하다. List 종류 - ArrayList, LinkedList, Vector - Vector와 같은 목적을 가지고 있으며 기능이 비슷하다. - Vector와의 차이점은 네트워크를 통한 객체 공유시 동기화 처리가 되어 있지 않다. - 속도는 Vector보다 빠른 속도를 가지고 있다. 굳이 객체를 스레드를 이용해 공유할 경우가 아니면 ArrayList 사용을 권장한다. 아래의 함수는 출력하는 함수로, HashSet 에서의 출력과 같은 구조이다. 아래는 나머지 부분들이다. 프로그램 실행결과 소스 파일 형 변환을 이용해서 List인터페이스를 활용 예제 프로그램 실행결과 다른 예제 프로그램 실행결과 소스 파일 다른 예제 프로그램 분석 프로그램 실행결과 소스 파일