JAVA/JAVA BASIC

[JAVA] Getter Setter, 상속

아잠만_ 2024. 3. 26. 13:50

Getter Setter

필드 값을 외부로 리턴하는 메소드 Getter

외부에서 값을 받아 필드값을 변경하는 메소드 Setter


public class Person {
	private String name;
	private int age;
	
	// getter
	public String getName() {
		return name;
	}
	// setter
	public void setName(String name) {
		if(name.length()<1||name.length()>5) {
			System.out.println("유효하지 않는 이름입니다.");
			return;
		}
		this.name = name;
	}
	// getter
	public int getAge() {
		return age;
	}
	// setter 접근할 수 있게함
	public void setAge(int age) {
		if(age<0 || age > 122) {
			System.out.println("유효하지 않은 나이입니다.");
			return;
		}
		this.age = age;
	}	
}
public class PersonExample {
	public static void main(String[] args) {
		Person p = new Person();
		p.setName("오리");
		p.setAge(20);
		
		System.out.println(p.getName()+", "+p.getAge());
	}
}

public class Sing {
	// 노래 이름
	// 가사
	// 가수
	// 작곡가
	// 발매연도	
	private String name;
	private String lyrics;
	private String singer;
	private String composer;
	private int year;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	public String getLyrics() {
		return lyrics;
	}
	public void setLyrics(String lyrics) {
		this.lyrics = lyrics;
	}

	public String getSinger() {
		return singer;
	}
	public void setSinger(String singer) {
		this.singer = singer;
	}

	public String getComposer() {
		return composer;
	}
	public void setComposer(String composer) {
		this.composer = composer;
	}

	public int getYear() {
		return year;
	}
	public void setYear(int year) {
		this.year = year;
	}


}
public class SingExample {
	public static void main(String[] args) {
		Sing s1 = new Sing();
		s1.setName("나는 아픈 건 딱 질색이니까");
		s1.setLyrics("오늘도 아침엔 입에 빵을 물고 \r\n" + "똑같이 하루를 시작하고");
		s1.setSinger("(여자)아이들");
		s1.setComposer("소연");
		s1.setYear(2024);
		
		System.out.println(s1.getName());
		System.out.println("가수: "+s1.getSinger());
		System.out.println("작곡가 : "+s1.getComposer());
		System.out.println("발행년도 : "+s1.getYear());
		System.out.println("가사 : "+s1.getLyrics());
	}
}

단축키 alt shift s > getter setter

상속

이미 개발된 클래스를 재사용하여 새로운 클래스를 만들기에 중복되는 코드를 줄임

부모 클래스의 수정으로 모든 자식 클래스까지 수전되는 효과가 있어서 유지보수 시간을 줄임


public class Phone {
	public void call() {
		System.out.println("3G 전화 걸기");
	}
		
}
public class HandPhone extends Phone {
	
	private void move() {
		System.out.println("이동 기능");
	}
	
	@Override
	public void call() {
		move();
		super.call();
	}
		
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return super.toString(); //super 부모클래스
	}

}
public class CameraPhone extends HandPhone{
	public void camera() {
		System.out.println("사진 촬영");
	}
}
public class SmartPhone extends CameraPhone{
	public void touch() {
		System.out.println("터치 기능");
	}
	
	public void internet() {
		System.out.println("인터넷 기능");
	}
}
public class IPhone extends SmartPhone{
	@Override
	public void camera() {
		System.out.println("1000만 화소 카메라");
	}
}
public class PhoneExample {
	public static void main(String[] args) {
		IPhone ip = new IPhone();
		ip.call();
		ip.camera();
		ip.internet();
		ip.touch();
	}
}

다형성

 Collection

HashSet 빠른 대신에 순서정렬 X

TreeSet 느린 대신에 순서 정렬 O

메소드 재정의 (override)

부모클래스에서 만들어진 메소드를 재정의

//부모클래스
public class Animal {
	public void cry() {
		
	}
}
// 자식클래스
public class Dog extends Animal {
	@Override
	public void cry() {
		System.out.println("멍멍");
	}
}
// 자식 클래스
public class Cat extends Animal {
	@Override
	public void cry() {
		System.out.println("야옹");
	}
}
public class AnimalExample {
	
	public static void main(String[] args) {
		
	Animal ani = null;
	
	int sel = 1;
	
	if(sel == 1) ani = new Cat();
	if(sel == 2) ani = new Dog();
	
	ani.cry();
	}
}

public class Unit {
	String name;
	int hp;
	
	public void attack() {
		
	}
	
	public void move() {
		
	}
}
public class Marine extends Unit{
	@Override
	public void attack() {
		System.out.println("데미지 5를 줍니다.");
	}
	
	@Override
	public void move() {
		System.out.println("걸어 갑니다");
	}
}
public class Mutal extends Unit{
	@Override
	public void attack() {
		System.out.println("스플래시 공격");
	}
	
	@Override
	public void move() {
		System.out.println("날아 갑니다.");
	}
}
import java.util.Scanner;

public class UnitExample {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("1. 마린");
		System.out.println("2. 뮤탈");

		Unit unit = null;
		int sel = 1;
		if (sel == 1) unit = new Marine();
		if (sel == 2) unit = new Mutal();

		while (true) {
			System.out.println("1. 공격, 2. 이동");
			int sel2 = sc.nextInt();
			if (sel2 == 1) unit.attack();
			if (sel2 == 2) unit.move();
		}

	}
}

클래스 타입 변환

자동 타입변환

부모타입 변수 = 자식타입; (자동타입 변환)
자식타입 변수 = (자식타입) 부모타입; (강제 casting)