JAVA

· JAVA
어떤 객체의 정보를 문자열로 변환하여 리턴 기본적으로 Object 클래스의 toString() 메서드는 객체의 정보(=주소값)를 문자열로 리턴하도록 정의되어 있음' 일반적으로 객체의 정보는 객체 내의 멤버변수에 저장된 데이터(속성값)를 의미하므로 Object 클래스의 toString() 메서드를 오버라이딩하여 객체가 가진 멤버변수값을 문자열로 결합하여 리턴하도록 해야함 출력문 내에는 toString() 메서드 생략 가능(참조변수명만 사용 가능) 자바에서 제공하는 대부분의 클래스(API)들은 toString() 메서드가 오버라이딩 되어있으므로 객체에 저장된 값을 문자열로 리턴받기 가능 ex) String 클래스, ArrayList 클래스 등 equals() 메서드와 마찬가지로 단축키를 통한 자동생성 가능 ..
· JAVA
java.lang 패키지에 위치하는 클래스 -모든 클래스의 슈퍼클래스(최상위클래스) => 상속을 표현하지 않으면 자동으로 상속되는 클래스 Object 클래스의 모든 멤버는 다른 클래스에서 사용 또는 오버라이딩 가능 1. equals() 메서드 (public boolean equals(Object o) {}) 두 객체가 같은지 동등비교(==) 수행 => 즉, 두 객체의 주소값을 비교하여 같으면 true, 다르면 false 리턴 실제 '두 객체가 같다'는 의미는 두 객체의 주소값 비교가 아닌 객체가 가지는 멤버변수가 같다는 의미로 사용됨 => 따라서, 사용자가 정의하는 클래스에 Object 클래스로부터 상속받은 equals() 메서드를 오버라이딩하여 각 객체의 멤버변수끼리 비교하도록 수정하여 사용함 자바에서..
· JAVA
4. 모듈간 독립적 프로그래밍으로 인한 개발기간 단축 개발자와 디자이너의 규칙을 인터페이스로 정의 interface LoginProcess { // 공통 기능으로 login() 메서드를 정의하여 파라미터와 리턴타입 지정 public abstract String login(String id, String pass); } 디자이너의 경우 ➡️로그인 처리 과정은 중요하지 않고 전달 데이터와 리턴 데이터만 중요함 ➡️LoginProcess 인터페이스를 구현하는 클래스를 정의하여 login() 메서드 구현 class Designer implements LoginProcess { @Override public String login(String id, String pass) { // 메서드에 전달되는 데이터가 정확..
· JAVA
3. 서로 상속 관계가 없는 클래스간의 인터페이스를 통한 상속 관계 부여 ➡️ 다형성 확장 Ex4 ex = new Ex4(); ex.noRealationShip(); } //main() public void noRealationShip() { NoteBookPc notebook = new NoteBookPc(); notebook.charge(); SmartPhone smartphone = new SmartPhone(); smartphone.charge(); } } //class // Object 클래스 외에 슈퍼클래스가 없는 NoteBookPc와 SmartPhone의 공통 인터페이스 Chargeable 정의 interface Chargeable { // 두 클래스에서 공통으로 사용할 충전(charge()..
· JAVA
인터페이스의 필요성 구현의 강제로 통일성 향상(=표준화) 인터페이스를 통한 간접적인 클래스 사용으로 모듈 교체가 용이 => 특정 클래스를 직접 다루는 대신, 부모 인터페이스 타입으로 클래스를 다루게 되면 실제 인스턴스가 바뀌더라도 기존 코드를 수정할 필요가 없어짐 서로 상속 관계가 없는 클래스간의 인터페이스를 통한 상속 관계 부여 => 다형성 확장 모듈간 독립적 프로그래밍으로 인한 개발 기간 단축 2. 인터페이스를 통한 간접적인 클래스를 사용으로 모듈 교체가 용이 ➡️인터페이스 사용 시 손쉬운 모듈 교체를 지원한다! /* * 문서 등을 프린터로 출력하기 위한 각 프린터 클래스 정의 * => 각 프린터의 출력 기능을 갖는 printer 인터페이스를 정의하고 각 프린터 클래스에서 상속받아 구ㅕㄴ */ int..
· JAVA
다이아몬드 상속에서의 문제점(이슈) 번식() 메서드를 갖는 슈퍼클래스 동물 클래스를 정의하고 고래와 상어 클래스에서 동물클래스를 상속받기 abstract class 동물2 { public abstract void 번식(); } class 상어2 extends 동물2 { @Override public void 번식() { System.out.println("알을 낳아 번식!"); } } class 고래2 extends 동물2 { @Override public void 번식() { System.out.println("새끼를 낳아 번식!"); } } 만약, 다중 상속을 허용할 경우 발생하는 문제점 ➡️고래와 상어클래스를 동시에 상속받는 고래상어 클래스 정의 // class 고래상어2 extends 고래2, 상..
· JAVA
인터페이스(Interface) 클래스가 아니므로 선언 시 class 키워드를 사용하지 않고 interface 키워드를 사용하여 정의 인터페이스는 상수와 추상메서드만 가질 수 있다. => 모든 멤버변수는 public static final이 붙은 상수로 취급됨 (public static final 생략 가능) public으로 인해 누구나 접근 가능 static으로 인해 클래스명만으로 접근 가능 final로 인해 값 변경 불가 => 모든 메서드는 public abstract가 붙은 추상메서드로 취급됨 (public abstract 생략 가능) 메서드 바디를 가질 수 없음 public으로 인해 누구나 접근 가능) 추상클래스와 마찬가지로 추상메서드를 포함하므로 객체 생성 불가능 => 단, 참조변수 타입으로는 사..
· JAVA
레퍼런스 형변환 어떤 객체(인스턴스)를 다른 타입으로 변환하는 것 참조형 데이터타입간의 변화 반드시 상속 관계가 전제되어야함 (= 상속 관계가 아닌 타입끼리의 형변환은 허용되지 않음 = 오류 발생) 슈퍼클래스타입 서브클래스타입 묵시적 형변환(업캐스팅, Up Casting)과 명시적 형변환(다운캐스팅, Down Casting)으로 구분 1. 업캐스팅(Up Casting) 슈퍼클래스 타입 레퍼런스로 서브클래스 인스턴스를 참조하는 것 = 서브클래스의 인스턴스를 슈퍼클래스 타입으로 변환하는 것 컴파일러에 의해 자동 형변환이 일어남(=묵시적 형변환) = 별도의 형변환 연산자를 사용하지 않아도 변환 가능함(생략 가능) 참조 가능한 영역이 축소됨 (슈퍼클래스로부터 상속된 멤버만 접근이 가능해짐) 서브클래스 인스턴스 ..
ઇ땅코니ଓ
'JAVA' 카테고리의 글 목록 (6 Page)