클래스
class MyTv{
private String che;//채널
private String vol;//볼륨
public String getChe() {
return che;
}
public void setChe(String che) {
this.che = che;
}
public String getVol() {
return vol;
}
public void setVol(String vol) {
this.vol = vol;
}
public static void title() {
System.out.println("**tv시청목록**");
}
/*
public MyTv(String che, String vol) {
this.che=che;
this.vol=vol;
}
public void getMyTv() {
System.out.println(che+"를 시청합니다\n볼륨은 "+vol+"데시벨 입니다");
}
*/
}
메인
public class RevieObject_01 {
public static void main(String[] args) {
MyTv in1=new MyTv();
MyTv.title();
in1.setChe("ebs");
in1.getChe();
in1.setVol("15");
in1.getVol();
MyTv in2=new MyTv();
in2.setChe("tbn");
in2.getChe();
in2.setVol("18");
in2.getVol();
System.out.println(in1.getChe()+"채널을 시청합니다\n볼륨은 "+in1.getVol()+"데시벨 입니다");
System.out.println("---------------------------------------------------");
System.out.println(in2.getChe()+"채널을 시청합니다\n볼륨은 "+in2.getVol()+"데시벨 입니다");
/*
MyTv.title();
MyTv arr[]= {new MyTv("ebs", "15"), new MyTv("tbn", "18")};
for(int i=0;i<arr.length;i++)
{
arr[i].getMyTv();
}
*/
}
}
클래스
class Starbucks{
private String store;//지점
private String menu;//메뉴
private String goods;//텀블러등등
public Starbucks(String s, String m, String g) {
this.store=s;
this.menu=m;
this.goods=g;
}
public void getStarbucks() {
System.out.println("나는 스타벅스 "+store+"매장에 왔습니다");
System.out.println(menu+"를 주문합니다");
System.out.println(goods+"를 샀어요");
}
}
메인
public class ReviewObject_02 {
public static void main(String[] args) {
Starbucks arr[]= {new Starbucks("코엑스", "아이스 아메리카노", "우산"),
new Starbucks("미금역", "돌체라떼", "텀블러")};
for(int i=0;i<arr.length;i++) {
arr[i].getStarbucks();
System.out.println("==============================");
}
}
}
클래스 has 개념
생성자 개념이 상속에도 그대로 옴
상속 is 개념
상위개념에 비슷한 것끼리 묶음
하나씩 만들고 공통된 개념들을 부모개념에 하나로 합쳐서 사용
자바에서는 딱 하나만 상속 가능
자바의 조상을 오브젝트라 하는데 거기서 받아와서 calendar scanner 등등 사용
상속을 받는 이유 부모클래스에 있는 메서드를 받아 쓰기 위해서
java.lang.object -> 자바의 조상이기 때문에 여기서 상속받아 scanner calendar 사용 가능했음
부모클래스가 다른 패키지에 있을경우 protected,public 변수는 접근이 가능하다
같은 패키지인 경우에는 private만 빼고 모두 접근 가능하다
패키지1 부모클래스
부모클래스에 super를 씀
package day0629_1;
/* 부모클래스가 다른 패키지에 있을경우 protected,public 변수는 접근이 가능하다
* 같은 패키지인 경우에는 private만 빼고 모두 접근 가능하다 */
//보통 부모클래스에 super를 씀
public class SuperObj {
protected String name;
protected int age;
public SuperObj(String name, int age) {
this.name=name;
this.age=age;
}
}
패키지2 자식클래스
java.lang.object -> 자바의 조상이기 때문에 여기서 상속받아 scanner calendar 사용 가능했음
자식 클래스에 Subject를 붙임
부모클래스에서 자식클래스에 상속받아오니까 자식클래스가 더 큰 개념이 된다
public class SubObj_03 extends SuperObj{
-> extends 클래스명-상속받겠다
extends 부모클래스 하면 자식클래스명 아래에 빨간줄이 뜸 -> add constructor 클릭해서 부모클래스 상속
부모클래스 저장해야 에러가 안뜸 -> 저장 안하면 extends하는 순간 에러
변수 자료형에 뭘 넣어도 상관없다(private,디폴트(instance)) - 메인용 클래스가 같은 패키지에 있기 때문
부모클래스 -> 자식클래스 상속받기
extends 부모클래스 하면 자식클래스명 아래에 빨간줄이 뜸 -> add constructor 클릭해서 부모클래스 상속
부모클래스 저장해야 에러가 안뜸 -> 저장 안하면 extends하는 순간 에러
부모 클래스에 있던걸 그대로 가져옴
()안 변수는 변경해도 되지만 메서드 밑 super()는 항상 첫줄에 있어야함
자식클래스 안에서 따로 메서드 생성 가능
public SubObj_03(String name, int age, String addr) {
super(name, age);//상속받은걸 무조건 첫 줄에 넣어야함
this.addr=addr;//자식클래스에 있는건 부모클래스에서 상속받은 것 밑에 적어야함
}
슈퍼(부모)클래스의 디폴트 생성자는 오류발생 (부모클래스에 생성 안해줬기 때문)
슈퍼(부모)클래스의 디폴트 생성자는 오류발생
public SubObj_03() {
}/
package day0629;
import day0629_1.SuperObj;
//java.lang.object -> 자바의 조상이기 때문에 여기서 상속받아 scanner calendar 사용 가능했음
//자식 클래스에 Subject를 붙임
//extends 클래스명-상속받겠다
//부모클래스에서 자식클래스에 상속받아오니까 자식클래스가 더 큰 개념이 된다
public class SubObj_03 extends SuperObj{
//뭘 넣어도 상관없다(private,디폴트(instance)) - 메인용 클래스가 같은 패키지에 있기 때문
String addr;
//부모 클래스에 있던걸 그대로 가져옴
//extends 부모클래스 하면 자식클래스명 아래에 빨간줄이 뜸 -> add constructor 클릭해서 부모클래스 상속
//부모클래스 저장해야 에러가 안뜸 -> 저장 안하면 extends하는 순간 에러
public SubObj_03(String name, int age, String addr) {
super(name, age);//상속받은걸 무조건 첫 줄에 넣어야함
this.addr=addr;//자식클래스에 있는건 부모클래스에서 상속받은 것 밑에 적어야함
}
public void write()
{
System.out.println("이름: "+this.name); //상속받아와서 같은 클래스에 있기때문에 여기서는 this. 사용 가능
System.out.println("나이: "+this.age);
System.out.println("주소: "+this.addr);
}
//슈퍼(부모)클래스의 디폴트 생성자는 오류발생
/*public SubObj_03() {
}*/
}
패키지2 메인클래스
생성
자식클래스에 부모 상속을 받았기 때문에 자식클래스로 호출해야함
메서드호출은 오버라이딩 했다면 호출한 클래스의 메서드 사용
package day0629;
public class TestObj_03 {
public static void main(String[] args) {
//생성
//자식클래스에 부모 상속을 받았기 때문에 자식클래스로 호출해야함
SubObj_03 sub=new SubObj_03("이효리", 22, "제주시 애월");
//메서드호출
sub.write();
}
}