이번에는 클래스와 객체를 예를들어 직접 만들어보자.
그전에 우린 인터페이스와 추상클래스에 대해서 간단히 살펴보고 진행하자.
- 인터페이스란?
필요한 기능만을 모아놓은 덩어리다.
쉽게말해, 이 기능을 한번 정의를 해놓으면, 재 작성하지않고도 해당 객체에 필요한 기능을 불러와 반복적으로 코드를 작성할 필요없이 재사용성이 가능하다
- 추상클래스란?
자식의 기능이 꼭 필요 할 경우 생성해주는 역할을 한다.
예를들어 부모 클래스에서 상속받는 자식 클래스들에게 공통적으로 필요한 부분 혹은 꼭 상속시켜야만하는 기능이 있을경우 이 추상클래스를 사용하면 된다.
: 추상클래스와 인터페이스는 상속관계가 가능하지만, 직접 자식을 생성 혹은 구현 할 수 없다. (인스턴스 불가능) 다른 클래스에게 기능을 부여하는 역할을 한다는 의미이다.
* 클래스들에게 필요한건 -> 인터페이스와 추상클래스
* 객체에게 필요한건 -> 필요한 기능들만 집합한 클래스
이제, 본격적으로 객체를 생성해보자.
객체를 생성하기위해 우리에게 필요한 클래스, 인터페이스는 다음과 같다.
1. 사람, 혹은 동물들이 할 수 있는 동작들을 모아놓은 인터페이스
2. 1번의 생물체들의 공통적인 특징을 모아놓은 부모클래스
3. 1, 2번을 상속받아 자식 클래스 구현하기.
1. 3개의 인터페이스 구현
1-1. 걷기가 가능하다 Running 인터페이스
1-2. 하늘을 날 수 있다 Flying인터페이스
1-3. 수영이 가능하다 Swimming 인터페이스
- interface Running{
- public void run();
- }
- interface Flying{
- public void fly();
- }
- interface Swimming{
- public void swim();
- }
이전에 설명못했던 부분이 있는데, 인터페이스는 직접 메소드의 body ( 메소드의 내용부분)를 직접 작성할 수 없다.
2. 상속가능한 부모클래스 구현
- class Alive{
- public String name;
- public int age;
- public Alive(String name, int age){ // 생성자 구현
- this.name = name;
- this.age = age;
- }
- public void getInfo(){ // 객체 정보를 출력
- System.out.println("이름 : " + this.name);
- System.out.println("나이 : " + this.age);
- }
- public void Addage(){ // 객체 나이 1씩 증가
- this.age++;
- System.out.println("현재나이 : " + this.age);
- }
- public void possibleAct(){ // 객체가 가능한 기능들 실행
- }
- }
3. 위의 인터페이스, 부모클래스를 상속받는 자식클래스 생성
- class Bird extends Alive implements Flying, Running{
- public Bird(String name, int age){
- super(name, age); // 상속받은 객체의 생성자부분을 실행시 부모의 생성자부터 실행이되므로 super()를 통해 부모 생성자 실행!
- }
- public addAge(int year) { // 메소드 오버로딩.
- System.out.println(year + "년이 지났습니다.");
- this.age += year;
- System.out.println("현재 나이 : " + this.age + "살 입니다. ");
- }
- // 인터페이스의 메소드 오버라이딩 1
- pubic void Fly(){
- System.out.println(this.name + "님은 나는것이 가능합니다.");
- }
- public void Run(){
- System.out.println(this.name + "님은 걷기가 가능합니다.");
- }
- // 클래스의 메소드 오버라이딩 2
- public possibleAct(){
- Fly();
- Run();
- }
- }
오버로딩과 오버라이딩은 다음시간에 설명할텐데, 우선, 간단히 부모에게 상속받은 메소드를 원래 것에서 자신의 스타일에 맞게 변형시켜 놓은 메소드라고 알아두자.
4. 객체생성 (인스턴스)
- public exam{
- public static void main(String[] args){
- Bird b1 = new Bird("꾀꼬리", 11);
- b1.getInfo();
- b1.possibleActivity();
- b1.addAge(3);
- }
- }
▶ 실행결과
우리는 한 마리의 새 를 구현했다. 이처럼 자바의 가장 큰 특징인 클래스와 객체에 대해서 간단하게 살펴보았다,
다음시간에는 오버로딩과 오버라이딩에 대해서 살펴보도록 하겠다.
댓글 없음:
댓글 쓰기