2016.08.11. Thu. 아홉 번째 수업
오늘의 내용
- class extends에 대한 이해
- extends를 이용한 예제 만들기 (class Animal)
- Frame 만들기 (panel, label, font의 색상 및 크기 변경, X 버튼 이용해서 창닫기 구현)
- 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
- 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);
}
}
'IT story > Java' 카테고리의 다른 글
D+11 Object, toString, hashCode (0) | 2016.08.17 |
---|---|
D+10 Abstract(추상클래스), Anonymous(익명클래스), Interface(인터페이스) (0) | 2016.08.13 |
D+8 class(overload, Calculator 출력, scope) (0) | 2016.08.10 |
D+7 Method(함수) main method 설명, Login창 만들기(multi parameter) (0) | 2016.08.09 |
D+6 Method(함수) Method, Parameter(매개변수), Multi Parameter (0) | 2016.08.08 |