본문 바로가기

Java/information

(31)
[자바/JAVA] 추상 클래스 추상 클래스(abstract class) 사전적 의미로 추상은 실체 간에 공통되는 특성을 추출한 것을 말한다. 객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상 클래스라고 한다. 추상 클래스와 실체 클래스는 상속의 관계를 가지고 있다. 추상 클래스가 부모, 실체 클래스가 자식으로 구현되어 실체 클래스는 추상 클래스의 모든 특성을 물려받고, 추가적인 특성을 가질수 있다. 여기서 특성이란 필드와 메소드들을 말한다. 예를 들어 Bird.class, Insect.class, Fish.class 등의 실체 클래스에서 공통되는 필드와 메소드를 따로 선언한 Animal.class 클래스를 만들 수 있는데, 이것이 바로 추상 클래스이다. 추상 클래..
[자바/JAVA] 다형성 다형성: 여러가지 형태를 가질 수 있는 성질 -객체 사용 방법은 동일하지만 실행결과가 다양하게 나오는 성질로 한 번의 코딩으로 여러개의 객체를 생성할 수 있는 원리가 '다형성'이다. (상속과 같이 불필요한 코드 사용을 줄이는 개념으로 참조변수에 얼마나 다양한 생성자를 받을 수 있는지가 중요하다) 부모 참조 변수에 실제 자식의 인스턴스 참조값을 넣는 것 보이는 참조값은 부모지만, 실제 저장된 값은 자식객체를 가르키는 주소값 상속 관계에서 각 자식 클래스에는 오버라이딩된 메소드를 가지고 있을 때 각각 자식 인스턴스는 자기의 오버라이딩된 메소드를 호출한다. 다형성을 구현하려면 메소드 재정의와 타입 변환이 필요하다 (메소드의 재정의 + 타입 변환 -> 다형성) 타입 변환이랑 타입을 다른 타입으로 변환하는 행위를..
[자바/JAVA] 상속 상속은 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여준다. 상속을 이용하면 부모 클래스의 수정으로 모든 자식 클래스들도 수정되는 효과를 가져오기 때문에 유지 보수 시간을 최소화할 수도 있다. 하나의 클래스가 다른 클래스를 상속받을 때 extends 키워드를 사용 상속하는 클래스를 '부모 클래스' 또는 상위 클래스(슈퍼 클래스) 또는 기본(기반)클래스(베이스클래스) 상속받는 클래스는 '자식 클래스' 또는 하위클래스(서브클래스) 또는 파생 클래스(유도 클래스) 프로그램에서는 자식이 부모를 선택한다. 선택된 부모 클래스는 extends 뒤에 기술한다. 자바에서도 자식 객체를 생성하면, 부모 객체가 먼저 생성되고 그다음에 자식 객체가 생성된다. 부모 생성자는 자식 생성자..
[자바/JAVA] 헷갈리는 용어 정확하게 정리 인스턴스 멤버 : 인스턴스멤버란 객체(인스턴스)를 생성한후 사용할수 있는 필드와 메소드를 말하는데, 이들을 각각 인스턴스 필드, 인스턴스 메소드라고 부른다. this : 객체 내부에서도 인스턴스 멤버에 접근하기 위해 this를 사용할 수 있다. 예를 들어 this.model은 자신이 가지고 있는 model 필드라는 뜻이다. this는 주로 생성자와 메소드의 매개변수 이름이 필드와 동일한 경우, 인스턴스 멤버인 필드임을 명시하고자 할 때 사용된다. 정적 멤버 : 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 이들을 각각 정적 필드, 정적 메소드라고 부른다. static : 정적 멤버를 선언할 때 사용하는 키워드이다. 싱글톤 : 전체 프로그램에서 단 하나의 객체만 만..
[자바/JAVA] 생성자 인스턴스 변수에 다른 인스턴스를 담으면 같은 주소값을 참조한다. 같은 클래스로 다양한 객체를 계속해서 생성 가능하다. 클래스 외부에서 사용할 경우 우선적으로 클래스로부터 객체를 생성한 뒤 필드를 사용해야한다. 필드 선언 : 클래스 중괄호{} 블록 어디서든 선언하나, 생성자와 메소드 내부에서는 선언할 수 없다. 필드 사용 : 클래스 내부의 생성자와 메소드에서 바로 사용이 가능하나, 클래스 외부에서 사용할 경우네는 반드시 객체를 생성하고 참조 변수를 통해 사용해야 한다. 개발자가 임의로 생성자 함수를 만들지 않으면 자동으로 기본 생성자 함수가 생성되어 호출된다. 개발자가 임의로 생성자 함수를 만들면 자동으로 생성되었던 기본 생성자 함수는 자동 생성되지 않는다! 생성자 함수의 역할 : 데이터 초기화 this가..
[자바/JAVA] 객체와 인스턴스 리턴값이 없는 메소드는 리턴 타입을 void로 해야한다. 리턴 타입이 있는 메소드는 리턴값을 지정하기 위해 반드시 return문이 있어야 한다. 매개값의 개수를 모를 경우 배열 혹은 ...을 이용해서 매개 변수를 선언할수 있다. 같은 이름의 메소드를 여러 개 선언하는 것을 메소드의 오버로딩이라고 한다. 오버로딩은 동일한 이름의 메소드를 여러 개 선언하는 것을 말한다. 리턴 타입이 꼭 달라야하는것은 아니다. 매개 변수의 타입, 개수, 순서를 다르게 선언해야한다. 매개값의 타입 및 개수에 따라 호출될 메소드가 선택된다. 문자열의 주소값과 속성값이 모두 같은 것을 비교할때는 ==이 필요하고, 문자열 값만 같은지 비교할 때에는 equals("문자열") 메소드가 필요하다. 클래스에는 객체를 생성하기 위한 필드와 ..
[자바/JAVA] 정적 멤버와 메소드 오버로딩 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. static이 붙은 메소드를 '클래스 메소드'라고 부른다. 자바에서 static 키워들르 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제하는것을 의미하며 클래스의 인스턴스(객체)를 생성하지 않고도 다른 클래스에서 해당 클래스의 메소드를 사용할 수 있다!! static 변수에 접근하기 위한 메소드는 반드시 static 메소드여야 한다! static이 붙은 메소드를 '클래스 메소드'라 부른다. 자바에서 static 키워드를 사용한다는 것은 메모리에 한 번 할당되면 프로그램이 종료될 때 해제되는 것을 의미한다. return받는 자료형, 리턴값이 없을때는 void를 사용 매개변수 : 전달된 값을..
[자바/JAVA] 객체란 객체란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으면서 식별 가능한 것을 말한다. 객체는 속성과 동작으로 구성되어 있다. *객체를 하나씩 조립해서 완성된 프로그램을 만드는 기법을 객체 지향 프로그래밍이라고 한다. 자바는 이 속성과 동작을 각각 필드와 메소드라고 부른다. 객체란 변수와 함수가 모여 만든 하나의 꾸러미로 클래스를 이용하여 객체를 생성할 수 있으며 객체를 생성하여 변수와 함수를 그안에 추가, 수정할 수 있다. 이때 선언된 변수를 '프로퍼티', 이 때 선언된 함수는 '메서드'라고 부른다. 객체 자체는 프로퍼티와 메서드를 갖는 역할만 한다. 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링이라고 한다. 객체 모델링은 현실 세계 객체의 속성과 ..