JAVA 자바 클래스분리, toString,equal,hashcode ,equls,abstract

Devel/JAVA|2020. 8. 16. 17:34
반응형
 

1.print sysout main 밖으로

2.printEmpArr() 각자의 printinfo출력하게끔

 
3.print child datea() 자식의 유일한 data출력

4.main의 배열이 없어지고, createEmp()에 객체 생성, 배열 생성해서 main에서 배열을 받는다.

 
5.검색객체정보출력, searchcild(배열,이름), 이름에 해당되는 개체 return,
main -> 1.배열, 검색 이름 ->searchcildData(배열,이름)->2.배열 검색 -> 3. 검색 객체 변환 -> 4. 검색객체 출력함수호출 -> (검색객체) 5.printchilddata
instance of (name + depart, name + skill)
 

 
6.영업부 이름만 모아서 return
 
 
 
-toString()

 
 
-

 

 
+

equal를 사용햇기에 같다고 나올 것 같지만, 오버라이딩이 되어있지 않기때문에, 같지 않다 출력됨.
 
person클래스에 소스, hashcode and equls사용

 

-object 클래스
- 모든 클래스의 최상위 클래스이다. 
명시적으로 extends 하지 않아도 자동으로 상속받는다. Object 클래스의 메소드중에서 다음 2가지 메소드는 반드시 숙지하기 바람. 
 
가. equals 메소드 참조변수가 참조하는 인스턴스의 실제값을 동등비교할 때 사용한다. 기본데이터는 == 연산자로 비교하면 된다.
 
 
나. toString 메소드 참조변수가 참조하는 인스턴스 의 위치값을 문자열로 변경시키는 메소드이다. 이 메소드는 참조변수를 println(참조변수) 할때 자동으로 호출된다. 따라서 다음 두 문장은 동일하다.
 
 
-추상클래스

앞에서 배운 상속은 객체지향 프로그래밍의 핵심기능으로서 상속을 적용하면 코드의 재사용 및 다형성, 오버라이딩 메소드등과 같은 객체지향적인 프로그램 기법을 적용 할 수 있다. 하지만 강력한 상속을 적용시켜도 하위 클래스에서 부모의 메소드를 상속 받아서 사용하지 않고 자신만의 메소드를 작성하여 사용한다면 상속을 사용하는 장점 을 얻을 수 없다. 상속은 강제성이 없기 때문이다. 따라서 객체지향 특징인 재사용성 및 유지보수를 향상시키기 위해서 하위 클래스에서 반드시 부모 클래스의 메소드를 사용하게끔 강제할 필요성이 등장하게 되며 자바에서 는 인터페이스와 추상 클래스를 통해서 하위 클래스들에게 부모의 메소드를 반드시 사용하게 강제할 수 있다. 강제를 함으로써 통일성 및 일관성이 지켜질 수 있으며 결국에는 재사용성 및 유지보 수가 향상되고 관리하기도 쉬워진다. 인터페이스란 용어자체가 ‘창구 역할’을 하는 것 을 지칭하기 때문에 여러 창구(메서드)가 존재하는 것보다는 통일된 창구(부모에서 정 의된 메서드)를 통해서 의사 소통하는 것이 더욱 효율적이다.
 
부모에 이 메소드 만큼은 꼭  오버라이딩 해라.
 
- 함수 구현부인 {}가 없다. body가 없는 메소드를 추상 메소드(abstract method)라고 하며 abstract 키워 드를 사용하여 다음과 같이 표현된다.

추상 메소드를 body가 있는 메소드(concrete method)로 만들기 위한 방법은 추상 클래스를 상속받은 하위 클래스에서 오버라이딩 메소드를 통해서 가능하 다. ( 상속 이용 )
 
추상 메소드를 하나라도 포함하면 반드시 추상 클래스로 작성해야 되며 abstract 키워드를 사용하여 다음과 같이 표현한다.

 -특징
- 미완성 클래스이다. 
- 구성요소는 다음과 같다. 
:인스턴스 변수 
:일반 메소드 (concrete method) 
:생성자 
:추상 메소드 (abstract method)
 
- 객체생성이 불가능하다.
new가 안됨.(자식 클래스에서 오버라이딩해야함.)
- 추상 클래스도 클래스이기 때문에 단일상속만 지원된다.
 
 
 
 
 

 

댓글()
loading