IT story/Java

D+9 Extends (상속) Animal예제, Frame예제.

jason719 2016. 8. 11. 21:56

2016.08.11. Thu. 아홉 번째 수업


오늘의 내용

  • class extends에 대한 이해
  • extends를 이용한 예제 만들기 (class Animal)
  • Frame 만들기 (panel, label, font의  색상 및 크기 변경, X 버튼 이용해서 창닫기 구현)
1. extends 대해 이해하기
  • class Ancestor(조상 클래스), class Parents(부모 클래스), class Child(자식 클래스)에 대한 이해
  • 각 클래스 별 상속 관계 이해하자!! 
예제

package com.javalesson.ch07extends;

class Ancestor{}

class Parents extends Ancestor{

String name = "부모";

String p_name = "p부모";

public void p_method(){

System.out.println(name+"함수 호출");

}//p_method end

}//class end

class Child extends Parents{

String name = "자식";

public void c_method(){

System.out.println(name+"함수 호출");

}//c_method end

@Override

public void p_method() {

System.out.print(name+"함수에서 ");

super.p_method();

}//p_method end

}//class end

public class L01Extends {


public static void main(String[] args) {

Child C = new Child();

C.c_method();

C.p_method();//부모에게 상속받아서 부모의 자원을 사용 가능

System.out.println(C.name);//부모의 name이 자식의 필드로 덮여짐

System.out.println(C.p_name);

}//main end


}//class end


2. extends를 이용한 예제 연습

  • class Animal을 이용해 다른 동물들을 쉽게 만들어 보자
  • 고양이와 강아지를 만들자
예제

package com.javalesson.ch07extends;


class Animal{

String name,food;

public Animal(String name, String food){

this.name=name;

this.food=food;

}//생성자 규칙을 강제화 하기 위해

public void eat(){

System.out.println(name+"가 "+food+"를 먹는다.");

}

public void walk(){

System.out.println(name+"가 "+"걷는다.");

}

public void breath(){

System.out.println(name+"가 "+"숨쉰다.");

}

}

class Cat extends Animal{

String catWalk="살금살금 ";

public Cat(String name, String food){

super(name,food);

}

@Override

public void walk() {

System.out.print(catWalk);

super.walk();

}

}

class Dog extends Animal{

String dogWalk="터벅터벅 ";

String dogBreath="혀를 낼름거리며 ";

public Dog(String name, String food){

super(name,food);

}

@Override

public void walk() {

System.out.print(dogWalk);

super.walk();

}

@Override

public void breath() {

System.out.print(dogBreath);

super.breath();

}

}

public class L02Animal {


public static void main(String[] args) {

Cat c = new Cat("페르시안 고양이","닭가슴살");

c.eat();

c.walk();

System.out.println();

Dog dog = new Dog ("골든리트리버 강아지","사료");

dog.eat();

dog.walk();

dog.breath();

}//main end

}//class end


3. Frame 만들기
  • Panel, Label 생성(배경색, 폰트, 위치)
  • X버튼을 이용해 창닫기 구현
  • 마우스 올릴 때 Label 색상 변경하기
예제

package com.javalesson.ch07extends;


import java.awt.Frame;

import java.awt.Color;

import java.awt.Font;

import java.awt.Panel;

import java.awt.Label;

import java.awt.event.WindowEvent;

import java.awt.event.WindowAdapter;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;


class FrameDemo extends Frame{

Panel p;

static Label l1;

Label l2;

Label l3;

Font font1= new Font("serif", Font.PLAIN, 14);

Font font2= new Font("serif", Font.BOLD, 14);

Font font3= new Font("serif", Font.ITALIC, 14);

public FrameDemo(String frameName){

super(frameName);

p = new Panel();

p.setBackground(Color.LIGHT_GRAY);

l1 = new Label("1.Label");

l2 = new Label("2.Label", Label.CENTER);

l3 = new Label("3.Label", Label.RIGHT);

l1.setBackground(Color.BLUE);

l1.setFont(font1);

l1.setForeground(Color.WHITE);

l2.setBackground(Color.DARK_GRAY);

l2.setFont(font2);

l2.setForeground(Color.WHITE);

l3.setBackground(Color.GREEN);

l3.setFont(font3);

l3.setForeground(Color.WHITE);

p.add(l1);

p.add(l2);

p.add(l3);

this.add(p);

setSize(600, 400);

setVisible(true);

addWindowListener(new FrameDemoWindowAdapter());

l1.addMouseListener(new FrameDemoMouseListener());

}

}


public class L03Frame {


public static void main(String[] args) {

new FrameDemo("첫 번째 frame");

}//main end


}//class end

class FrameDemoWindowAdapter extends WindowAdapter{

public void windowClosing(WindowEvent e){

System.exit(0);

}

}

class FrameDemoMouseListener implements MouseListener{

@Override

public void mouseClicked(MouseEvent e) {}


@Override

public void mousePressed(MouseEvent e) {}


@Override

public void mouseReleased(MouseEvent e) {}


@Override

public void mouseEntered(MouseEvent e) {

FrameDemo.l1.setBackground(Color.RED);

}

@Override

public void mouseExited(MouseEvent e) {

FrameDemo.l1.setBackground(Color.BLUE);

}

}