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)
'JAVA > JAVA BASIC' 카테고리의 다른 글
[JAVA] 중첩 클래스, Unit 클래스 (0) | 2024.03.27 |
---|---|
[JAVA] 상속 - 추상 클래스, 인터페이스 (0) | 2024.03.27 |
[JAVA] enum (0) | 2024.03.25 |
3/22 Homework 회원가입 (0) | 2024.03.22 |
3/21 Homework 로또생성기 (0) | 2024.03.22 |