목록객체지향 (4)
매일 매일 미라클 코딩
오버라이딩, 오버로딩 이름이 비슷해서 헷갈릴 때가 많을 텐데요. 메소드를 다양한 형태로 활용한다는 점도 공통점이지만 알고 보면 많이 다릅니다. 이 둘을 구분하면, 또 하나의 헷갈리는 키워드 this와 super 도 구분할 수 있답니다. 1. 오버라이딩 (Overriding) 먼저 오버라이딩= 부모클래스를 상속받은 환경에서 사용합니다. 물려받은 기능을 하위클래스의 성격에 맞게 추가/변경하여 사용하고 싶을 때 메소드명과 매개변수를 똑같이 작성하여 덮어쓰는 것이죠 - 메소드 이름과 반환형, 매개변수가 같아야합니다. 여기 Machine 이라는 이름의 클래스가 있습니다. class Machine { public void on() { System.out.println("전원을 켭니다"); } public void ..

은행 계좌를 만들면, 그를 통해 여러가지 금융활동을 할 수 있습니다. 카드를 발급하고, 증권계좌와 연결하고, 보험상품도 구매할 수 있지요. 다양한 활동이지만 그 기본이 되는 것은 계좌번호, 잔액이라는 데이터이고. 입금과 출금이라는 기능임을 알 수 있습니다. 이처럼 공통된 기능을 연관된 클래스에서 받아서 쓸 수 있는 것이 바로 상속입니다. 기계의 작동원리인 전원켜기, 동작하기, 전원켜기를 TV, 라디오, 밥솥에 모두 적용할 수 있는데요 이러한 공통된 기능을 각각의 클래스마다 코딩하는 것은 비효율 적인 일일 것입니다 . 따라서 기계()라는 상위 클래스를 상속받아 쓰는 하위 클래스들을 만드는 것이지요. 저번에 은행 프로그램에서 만든 계좌 클래스를 활용해 상속을 다뤄 보겠습니다. class Account{ St..

시험을 봐야하는데 수험표가 없다면? 입금을 해야하는데 계좌번호를 모른다면? 시험이라는, 입금이라는 중요한 임무를 수행할 수 없게 되겠지요. 프로그램도 마찬가지로 객체를 다룰 때 꼭 필요한 준비물이 있습니다. 이러한 준비물이 누락되는 것을 방지하는 것이 바로 클래스의 생성자입니다. 입출금을 실행하는 은행 프로그램을 만들겠습니다. 계좌 단위로 거래가 이루어지므로 Account 클래스를 만들었습니다. class Account{ String name; int accountNum; int money; public Account(String name, int num, int money) { this.name=name; accountNum= num; this.money = money; } } 클래스 안에 클래스와 같..

배열 선언 시, 데이터를 메모리에 연속되게 저장합니다. 그리고 나서 자료형의 크기 만큼 (index) 번 이동하여 데이터를 사용합니다. 따라서 배열의 이름은 참조변수와 같습니다. C언어의 포인터 역할과 비슷합니다. 따라서 배열을 사용할 때는 배열의 참조값을 제어하는지 밸류값을 제어하는지에 주의하여 사용해야합니다. 그 차이점을 크게 배열의 얕은복사와 깊은복사 개념을 통해 알 수 있습니다. 1. 얕은 복사 배열을 단순히 '=' 연산자를 통해 복사할 경우, 원본 배열이 가리키는 참조값을 복사하게 됩니다. 그래서 아래와 같이 선언된 두 배열은 메모리 상의 같은 곳을 가리키게 되죠. int[] arr1 = new int[]{1, 2, 3, 4}; int[] arr2 = arr1; 이때 복사한 배열2의 값을 바꾸게..