전체 글

super는 자식 클래스에서 부모 클래스로 부터 상속받은 멤버를 참조하는데 사용되는 참조변수 멤버변수와 지역변수의 이름이 같을 때 this를 붙여서 구별 상속받은 멤버와 자신의 멤버와 이름이 같을 때 super를 붙여서 구별 모든 인스턴스 메서드에는 this와 super가 지역변수로 존재하는데 자신이 속한 인스턴스 주소가 자동으로 저장된다. 조상의 멤버와 자신의 멤버를 구별하는데 사용하는 점만 제외하면 this와 super 근본적으로 같다. public class Point { int x = 20; } class Circle extends Point{ int x = 10; void method(){ System.out.println(x); System.out.println(this.x); System.o..
오버로딩 메서드도 변수와 마찬가지로 클래스 내에서 구별가능해야 한다. Java에서는 같은 이름으로 여러개의 메서드를 정의할 수 있는데 이를 메서드 오버로딩 또는 간단히 오버로딩이라고 한다. (조건이 존재) 메서드 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야한다. (매개변수 이름이 다른건 의미 없다.) 반환타입은 관계없다. 매개변수(long a, int b) → (int a, long b) 오버로딩 성립된다. 오버라이딩 자식 클래스의 맞게 부모 클래스로부터 상속받은 메서드의 내용을 변경하는 것 (그대로 사용해도 된다.) 예를들어 학생 수가 30명만 될 줄 알았는데 40명이 되어서 메서드 수정해야될 때 메서드의 내용만을 새로 작성하는 것이기 때문에 메서드의 선언부(메서드 이름, 매개변수, 반환타..
기존의 클래스를 재사용하여 새로운 클래스 작성 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램 생산성과 유지보수에 크게 기여한다. 자식클래스는 부모클래스의 멤버들을 포함 자식 클래스는 부모 클래스의 모든 멤버를 상복 받으니까 항상 부모 클래스보다 같거나 많은 멤버를 가지게 된다. (상속이 계속될 때 마다 상속받는 클래스의 멤버 개수 계속 증가) 위에 같은 이유 때문에 확장(extend)한다는 의미로 해석 가능 자식 클래스는 부모 클래스의 모든 멤버를 상속 받는다 단, 생성자와 초기화 블럭은 상속되지 않는다 자식 클래스의 멤버 개수는 부모 클래스보다 항상 같거나 많다. 상속이외에 클래스를 재사용하는 방법 → 클래스 간에 포함(composite) 관계를 맺어 주는 것. 클래스 간의 포함관계를 맺어 ..
생성자를 잘 활용하면 보다 간결하고 직관적인 객체지향적인 코드 작성이 가능하다 인스턴스가 생성될 때 호출되는 ‘인스턴스 초기화 메서드’ 인스턴스 변수의 초기화 작업 혹은 인스턴스 생성 시에 실행되어야 하는 작업을 위해서 사용된다. 인스턴스를 생성할 때는 다음의 2가지 사항을 결정해야 한다. 클래스 - 어떤 클래스의 인스턴스를 생성할 것인가? 생성자 - 선택한 클래스의 어떤 생성자로 인스턴스를 생성할 것인가? class Card { //인스턴스 변수(개별 속성) String kind; //무늬 int number; //숫자 //클래스 변수(공통 속성) static int width = 100; static int height = 250; Card(String kind, int number){ this.ki..
클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 붙이기 생성된 인스턴스는 서로 독립적이기 때문이다. Card c1 = new Card(); //new 연산자를 통해서 독립적으로 만들기 Card c2 = new Card(); Card test = c1; // test는 c1인스턴스 참조 (test == c1 같은 인스턴스다.) if(c1 == c2) System.out.println("c1 == c2"); else if (c1 == test) System.out.println("c1 == test"); else if (c2 == test) System.out.println("c2 == test"); System.out.println(c1.equals(test)); System.ou..
uhanuu
몸뚱아리부터 마음가짐까지