자바-11일차 이클립스

최성현·2023년 6월 29일
0

Java

목록 보기
26/46

set get 문제복습

클래스

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();
		}
		*/
		
	}

}

set get 문제복습

클래스

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();
	}

}
profile
백엔드 개발자로서 성장해 나가는 성현이의 블로그~

0개의 댓글