Java Seminar Chapter 3 Static Static public class
Java Seminar Chapter 3
Static
Static public class Circle { private int r; private float pi = 3. 14 f; public class Main { public static void main(String[] args) { Circle c 1 = new Circle(5); Circle c 2 = new Circle(7); public Circle(int r) { this. r = r; } System. out. println(c 1. get. Area()); System. out. println(c 2. get. Area()); public void set. Pi(float pi) { this. pi = pi; } public float get. Area() { return r * pi; } } c 1. set. Pi(3); c 2. set. Pi(3); System. out. println(c 1. get. Area()); System. out. println(c 2. get. Area()); } }
Static public class Circle { private int r; private static float pi = 3. 14 f; public class Main { public static void main(String[] args) { Circle c 1 = new Circle(5); Circle c 2 = new Circle(7); public Circle(int r) { this. r = r; } System. out. println(c 1. get. Area()); System. out. println(c 2. get. Area()); public void set. Pi(float pi) { this. pi = pi; } public static float get. Area() { return r * pi; } } c 1. set. Pi(3); System. out. println(c 1. get. Area()); System. out. println(c 2. get. Area()); } }
Static public class Main { public static void main(String[] args) { Circle c 1 = new Circle(5); Circle c 2 = new Circle(7); System. out. println(c 1. get. Area()); System. out. println(c 2. get. Area()); Circle. set. Pi(3); System. out. println(c 1. get. Area()); System. out. println(c 2. get. Area()); } }
Inheritance(상속)
Inheritance(상속) package com. jiharu. core; public class Member { private String name; private String gender; private int age; public Member(String name, String gender, int age) { this. name = name; this. gender = gender; this. age = age; } public String get. Name() { return name; } public void set. Name(String name) { this. name = name; } public String get. Gender() { return gender; } public void set. Gender(String gender) { this. gender = gender; } public int get. Age() { return age; } public void set. Age(int age) { this. age = age; } public String to. String() { return "Member [name=" + name + ", gender=" + gender + ", age=" + age + "]"; } }
Inheritance(상속) 회원(Member)이 가진 속성 (Field) 이름(name) 성별(gender) 나이(age) 운영진(Admin)이 가진 속성(Field) 이름(name) 성별(gender) 나이(age) 직책(rank)
Inheritance(상속) package com. jiharu. core; public class Admin { private String name; private String gender; private int age; private String rank; public Admin(String name, String gender, int age) { this. name = name; this. gender = gender; this. age = age; this. rank = rank; } public String get. Name() { return name; } public void set. Name(String name) { this. name = name; } public String get. Gender() { return gender; } public void set. Gender(String gender) { this. gender = gender; } public int get. Age() { return age; } public void set. Age(int age) { this. age = age; } public int get. Rank() { return rank; } 이렇게 않 씀! public void set. Rank(int rank) { this. rank = rank; } public String to. String() { return ”Admin [name=" + name + ", gender=" + gender + ", age=" + age + ", rank=" + rank + "]"; } }
Inheritance(상속)
Inheritance(상속)
Inheritance(상속)
Inheritance(상속)
Inheritance(상속)
Inheritance(상속)
Inheritance(상속) package com. jiharu. core; public class Admin extends Member { private String rank; public Admin(String name, String gender, int age, String rank) { super(name, gender, age); this. rank = rank; } public String get. Rank() { return rank; } public void set. Rank(String rank) { this. rank = rank; } }
Inheritance(상속) package com. jiharu. main; import java. awt. Border. Layout; import javax. swing. JFrame; import javax. swing. JLabel; import javax. swing. JPanel; JLabel lbl 1 = new JLabel(admin. to. String()); JLabel lbl 2 = new JLabel(mem. to. String()); pn. add(lbl 1, Border. Layout. NORTH); pn. add(lbl 2, Border. Layout. SOUTH); import com. jiharu. core. Admin; import com. jiharu. core. Member; fr. set. Size(600, 400); fr. set. Visible(true); public class Main { public static void main(String[] args) { JFrame fr = new JFrame("This 프레임"); JPanel pn = new JPanel(); Admin admin = new Admin("김태정", "남자", 27, "교수"); Member mem = new Member("피카츄", "중성", 100); pn. set. Layout(new Border. Layout()); fr. set. Content. Pane(pn); } }
Inheritance(상속) 타입캐스팅 package com. jiharu. main; import java. awt. Border. Layout; JLabel lbl 1 = new JLabel(admin. to. String()); JLabel lbl 2 = new JLabel(mem. to. String()); pn. add(lbl 1, Border. Layout. NORTH); pn. add(lbl 2, Border. Layout. SOUTH); import javax. swing. JFrame; import javax. swing. JLabel; import javax. swing. JPanel; import com. jiharu. core. Admin; import com. jiharu. core. Member; fr. set. Size(600, 400); fr. set. Visible(true); } public class Main { } public static void main(String[] args) { JFrame fr = new JFrame("This 프레임"); JPanel pn = new JPanel(); Member admin = new Admin("김태정", "남자", 27, "교수"); Member mem = new Member("피카츄", "중성", 100); pn. set. Layout(new Border. Layout()); fr. set. Content. Pane(pn);
Inheritance(상속) 이 코드가 문제없이 실행되 지 않는다. 타입캐스팅 package com. jiharu. main; import java. awt. Border. Layout; JLabel lbl 1 = new JLabel(admin. to. String()); JLabel lbl 2 = new JLabel(mem. to. String()); pn. add(lbl 1, Border. Layout. NORTH); pn. add(lbl 2, Border. Layout. SOUTH); import javax. swing. JFrame; import javax. swing. JLabel; import javax. swing. JPanel; import com. jiharu. core. Admin; import com. jiharu. core. Member; fr. set. Size(600, 400); fr. set. Visible(true); } public class Main { } public static void main(String[] args) { JFrame fr = new JFrame("This 프레임"); JPanel pn = new JPanel(); Admin admin = new Admin("김태정", "남자", 27, "교수"); Admin mem = (Admin) new Member("피카츄", "중성", 100); pn. set. Layout(new Border. Layout()); fr. set. Content. Pane(pn);
Inheritance(상속) 원래의 정체가 Admin이어 야한다. 타입캐스팅 package com. jiharu. main; import java. awt. Border. Layout; import javax. swing. JFrame; import javax. swing. JLabel; import javax. swing. JPanel; JLabel lbl 1 = new JLabel(admin. to. String()); JLabel lbl 2 = new JLabel(mem. to. String()); pn. add(lbl 1, Border. Layout. NORTH); pn. add(lbl 2, Border. Layout. SOUTH); import com. jiharu. core. Admin; import com. jiharu. core. Member; fr. set. Size(600, 400); fr. set. Visible(true); public class Main { public static void main(String[] args) { JFrame fr = new JFrame("This 프레임"); JPanel pn = new JPanel(); Admin admin = new Admin("김태정", "남자", 27, "교수"); Member mem 0 = new Admin("피카츄", "중성", 100, "동물"); Admin mem = mem 0; pn. set. Layout(new Border. Layout()); fr. set. Content. Pane(pn); } }
Inheritance(상속) Abstract public int get. Y() { return y; } package com. jiharu. shape; public void set. Y(int y) { this. y = y; } public class Shape { private int x; private int y; private int width; private int height; public int get. Width() { return width; } public void set. Width(int width) { this. width = width; } public Shape(int x, int y, int width, int height) { this. x = x; this. y = y; this. width = width; this. height = height; } public int get. Height() { return height; } public int get. X() { return x; } public void set. Height(int height) { this. height = height; } public void set. X(int x) { this. x = x; } public float get. Area() { return 0; }; }
Inheritance(상속) Abstract package com. jiharu. shape; public class Circle extends Shape { public class Rectangle extends Shape { public Circle(int x, int y, int width, int height) { super(x, y, width, height); } public Rectangle(int x, int y, int width, int height) { super(x, y, width, height); } public float get. Area() { return get. Width() / 2 * get. Height() / 2 * 3. 14 f; } } public float get. Area() { return get. Width() * get. Height(); } } Shape에서 get. Area는 계륵 같은 존재
Inheritance(상속) public int get. Y() { return y; } Abstract package com. jiharu. shape; public void set. Y(int y) { this. y = y; } abstract public class Shape { private int x; private int y; private int width; private int height; public int get. Width() { return width; } public void set. Width(int width) { this. width = width; } public Shape(int x, int y, int width, int height) { this. x = x; this. y = y; this. width = width; this. height = height; } abstract 클래스 public int get. Height() { return height; } public int get. X() { return x; } public void set. X(int x) { this. x = x; } public void set. Height(int height) { this. height = height; } abstract public float get. Area() ; }
Inheritance(상속) Interface 그럼 모든 method가 abstract다! = 실체가 없다? = interface
Inheritance(상속) Interface
Inheritance(상속) Interface
Inheritance(상속) Interface package com. jiharu. person; public interface Person { public final static int foot = 2; public static int hand = 2; public int mouth = 1; int eye = 2; public abstract void run(); public void sleep(); void eat(); static void breath() { System. out. println("헉, 헉, 살기 위해 숨쉼!"); } default void eat. Chicken() { System. out. println("치킨 맛있엉!"); } } field는 자동으로 public final static이 되며 method 는 public abstract 가 된다.
Inheritance(상속) Interface package com. jiharu. person; public interface Person { public final static int foot = 2; public static int hand = 2; public int mouth = 1; int eye = 2; public abstract void run(); public void sleep(); void eat(); static void breath() { System. out. println("헉, 헉, 살기 위해 숨쉼!"); } default void eat. Chicken() { System. out. println("치킨 맛있엉!"); } } default 메소드는 interface에서만 존재. static 메소드는 반드시 본체를 기술해 야함.
Inheritance(상속) Interface를 상속받기
Inheritance(상속) Interface를 상속받기
Nested Class
Nested Class //Outter. java public class Outter { public class Inner { public class Main { public static void main(String[] args) { Outter o = new Outter(); Outter. Inner i = o. new Inner(); } } } public void method() { class Local{ } 메소드내에서만 사용가능 근데 안씀-- } } package 내에서만 사용가능 class Source { }
Nested Class package com. jiharu. person; 익명 public 클래스 class Main { (Anonymus Class) public static void main(String[] args) { Person kimtaejung = new Person() { @Override public void sleep() { System. out. println("푹 잘잠"); } @Override public void run() { System. out. println("두칸씩 뜀"); } @Override public void eat() { System. out. println("고기만 먹음"); } }; kimtaejung. run(); kimtaejung. eat. Chicken(); Person. breath(); package com. jiharu. person; public interface Person { public final static int foot = 2; public static int hand = 2; public int mouth = 1; int eye = 2; public abstract void run(); public void sleep(); void eat(); static void breath() { System. out. println("헉, 헉, 살기 위해 숨쉼!"); } default void eat. Chicken() { System. out. println("치킨 맛있엉!"); } }
Nested Class instanceof 연산자 1. 이 연산자는 상속관계인지 아 닌지 확인할 수 있다. 상속관계 에 있다면 true를 반환 2. 사용 방식은 (변수)instanceof(클래스) 형식으로 사용 package com. jiharu. person; public class Main { public static void main(String[] args) { Person kimtaejung = new Person() { @Override public void sleep() { System. out. println("푹 잘잠"); } @Override public void run() { System. out. println("두칸씩 뜀"); } @Override public void eat() { System. out. println("고기만 먹음"); } }; kimtaejung. run(); kimtaejung. eat. Chicken(); Person. breath(); System. out. println(kimtaejung instanceof Person); System. out. println(kimtaejung instanceof Object); } }
- Slides: 48