기본기 3

추상클래스와 인터페이스의 차이

인터 : 교차로 페이스 : 직면하다. 인터페이스는 위 교차로처럼 저 길로 들어선 순간 저 세 가지길 외에는 갈 수 없다는 행위에 대한 강제성이 부여된다. 인터페이스는 흔히 약속이라고 얘기하는데 개념은 일방적인 약속이다. 만든사람입장에서 갑의 입장으로 일방적으로 약속을 주입시키는 것이다. 그래서 인터페이스는 갑과 을이 존재하는 약속이다. 자바에서 인터페이스는 행위에 대한 제약을 준다. 추상 클래스와 인터페이스의 차이 자 위와 같은 경우는 추상 클래스로 구현을 해야 한다 사나운 동물이라는 추상적인 것들의 행위는 정해놓을 수 없기 때문에 미완성 설계도만 만들어놓고 new 해서 띄울 수 있는 실체가 있는 것들이 설계도를 완성하도록 해야 한다. 그럼 위 동물들로 게임을 만들어본다고 가정을 하면 자 위 그림처럼 네..

JAVA,객체지향 2021.11.26

오버로딩과 오버로딩의 한계

Over loading = 과적재 클래스는 상태와 행위를 가질 수 있다. 이때 어떤 클래스가 행위(메서드)를 가지고 있는데 이름이 똑같은 행위(메서드)를 가지고 있다 하더라도 매개변수가 다르다면 같은 이름의 행위(메서드)를 선택적으로 사용하도록 허락해주는 기법이다. 그럼 오버로딩된 메서드를 호출을 할 때 상황에 따라서 유연하게 매개변수를 입력해 줄 수 있다. 왜 오버로딩이 객체지향에서 중요한 문법이냐면?! 사실 저렇게 하지 않고도 메서드를 하나 더 만들면 된다 하지만 왜 오버 로딩이란 것이 탄생하게 됐고 이 오버 로딩의 한계는 무엇일까? 오버 로딩의 한계 자 다음과 같은 프로그램을 만들었다. 위 프로그램의 단점이 무엇일까? 첫 번째로 자유도가 떨어진다. 전사는 궁수만 공격할 수 있고 궁수는 광전사만공격할..

JAVA,객체지향 2021.11.25

JAVA/일반변수와 레퍼런스(참조) 변수

변수의 선언과 초기화 - 변수의 선언 : 타입 변수; (ex: int num;) - 변수의 초기화(메모리 할당) : 타입 변수 = 값; (ex: int num = 10); 일반 변수와 레퍼런스 변수 - 일반 변수는 값을 가지고 있다. 컴파일 시점에 크기가 정해져 있다. (ex: int처럼 크기가 정해진 것) - 레퍼런스 변수는 주소값(4바이트)을 가지고 있다. 컴파일 시점에 크기를 알 수 없고 런타임에 알 수 있다. - 주소는 힙메모리 내 주소다. 일반 변수와 달리 주소 값(포인터)을 통해 재차 찾아가야 하므로 액세스가 2번 발생한다. 레퍼런스 변수 예시 - class MyData { int num; String name; } 로 예시 - 변수의 선언 : MyData myData; - 변수의 초기화(메모..

JAVA,객체지향 2021.10.27