Jinie.log
로그인
Jinie.log
로그인
[Java] OCAJP-5
🐷Jinie (juniorDeveloper)
·
2020년 11월 12일
팔로우
0
0
Java
목록 보기
8/12
1.
String.trim()을 이용하면 공백을 제거할 수 있다.
단, 변수자체의 공백을 제거하는 것이 아니기 때문에 공백제거 결과를 새로운 String변수에 담아서 이용해야한다.
String.equals는 String변수가 같은 값을 가지고있는지 확인한다.
String.isEmpty() 는 String변수가 비어있는지 확인한다.
2.
abstract class :
추상클래스는 '미완성된 클래스'이다.
미완성된 메서드를 가지고있다.
추상클래스는 객체로 호출될 수 없다.
인터페이스를 implement해도 메서드를 무조건 사용하지 않아도 된다.
반드시 재정의를 해야 이용이 가능하다.
상속을 위한 클래스이기 때문에 따로 객체를 생성할 수 없다.
기존의 클래스에서 공통된 부분을 추상화하여 상속하는 클래스에게 구현을 강제화
메서드의 동작을 구현하는 자식클래스로 책임을 위임
공유의 목적
추상 클래스(abstract class)는 혼자로는 Class의 역할을 다 못하지만,
새로운 Class를 작성하는 데 있어 그 바탕(Basic Class)가 되는 부모클래스(Super Class)로서 중요한 의미를 갖는다.
즉, 상속받는 클래스에서 만들어둔 메서드를 완성하길 바라는 클래스라고 생각하면 된다.
인터페이스와의 차이점은 무엇일까?
인터페이스는 '다중상속'이 가능하다.
추상클래스는 메서드를 대충 그려놓는 미완성설계도 같은 느낌이면 인터페이스는 기본설계도라는 느낌이다.
인터페이스와 추상클래스의 사용의도 차이점
추상클래스는 IS - A "~이다".
인터페이스는 HAS - A "~을 할 수 있는".
추상클래스는 예를들어서 '먹다'라는 메서드를 강아지, 사람, 식물 에게 모두 적용하는 것으로 만들고자할때 사용할 수 있다. 강아지, 사람, 식물은 모두 다른 것을 먹기때문에 각각 '먹다'라는 메서드를 다르게 사용해야하기 때문이다.
그러면 추상클래스에서는 '먹다'만 정의를하고
그이후에 상속받는 클래스에서
사람은 '밥을 먹다.'
강아지는 '사료를 먹다.'
식물은 '햇빛을 먹다.' 로 재정의해서 필요한 메서드로 맞춰 사용할 수 있게 되는 것이다.
2-1. 추상 클래스(abstract class)
미완성 설계도 :
미완성 메서드(추상 메서드)를 포함하고 있다.
추상 클래스로 인스턴스는 생성할 수 없다.
새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스
상속을 통해 구현해준다.
추상클래스에도 생성자가 있고, 멤버변수, 메서드도 가질 수 있다.
상속 : 자손클래스를 만드는데 조상클래스를 사용하는 것.(구체화)
추상화 : 자손클래스들에서 공통적인 부분을 뽑아 조상클래스를 만드는 것.
2-1-1. 추상 메서드 (abstract method)
메서드는 선언부와 구현부로 구성되어 있는데,
그 중 선언부만 있고 구현부를 작성하지 않는 것이 추상 메서드이다.
설계만 해 놓고 실제 수행될 내용은 작성하지 않는 미완성 메서드이다.
이런식으로 실행코드를 넣어야할 구현부가 비어있다.
상속받는 클래스 각각의 구현부가 다를 수 있는 점을 생각하여 미완성 상태로 남겨둔 것이다.
그래서 추상클래스를 상속받는 자손 클래스는 조상의 추상 메서드를 상황에 맞게 적절히 구현해 주어야한다.
자손클래스는 추상클래스의 추상 메서드를 모두 오버라이딩(재정의)를 통해 구현해 주어야한다.
2-2. 인터페이스 (interface)
일종의 추상클래스와 같다.
단, 추상화의 정도가 추상클래스보다 높기때문에 상수와 추상메서드만 가질 수 있다.
인터페이스는 인터페이스로부터만 상속받을 수 있다.
다중상속 가능
구현시 implements를 사용한다.
implements로 구현하는 클래스에서는 인터페이스의 메서드를 모두 사용해야한다.
만약 일부만 구현한다면 abstract를 붙여서 추상클래스로 선언한다.
오버라이딩(재정의)를 한 후 사용한다.
인터페이스의 장점
개발시간을 단축시킬 수 있다.
표준화가 가능하다.
서로 관계없는 클래스들에게 관계를 맺어줄 수 있다.
독립적인 프로그래밍이 가능하다.
🐷Jinie (juniorDeveloper)
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕
팔로우
이전 포스트
[Java] OCAJP-4
다음 포스트
[Java] OCAJP-6
0개의 댓글
댓글 작성