1. Java 기초 다지기 (5-1)
1) 클래스 Getter,Setter, 클래스 객체 비교
class Student {
String name;
private int grade;
Student() {
this("no name", 1);
// this.name = "no name"; 같은 의미
// this.grade = 1;
}
Student(String name, int grade) {
this.name = name;
this.grade = grade;
}
private String getName() { // * Source - Generate getter and setter
return name;
}
private void setName(String name) {
this.name = name;
}
void setGrade(int grade) { // Set 필드를 설정
if (grade >= 1 && grade <= 100) { // Set(인수)
this.grade = grade;
return;
}
}
int getGrade() { // Get 필드에 접근
return grade;
// setter,getter 라고 함. 규칙 1.메서드명 set/get+첫문자대문자
}
}
class People{
private String name;
public People(String name) {
this.name = name;
}
public People(People p) {
this.name = p.name; // 인수 People P는 동일한 클래스이기때문에 private 한 name 직접 접근함
// new 로 만들어지는 타입 또한 People 동일한 클래스이기 때문에 접근 가능
//name = p.name; 써도됌
}
public void print() {
System.out.println(name);
}
public String getName() {
return name;
}
}
class Printer{
// 생성자가 없으므로 default 생성자 제공됌
public void print(People p) {
// System.out.println(p.name); 클래스가 달라 p.name 접근허용이 안됌
}
}
public class Day5 {
public static void main(String[] arg) {
Student s1 = new Student();
Student s2 = new Student("임정민", 100);
// System.out.println(s1.name + ", " + s1.grade); private이기때문에 다른클래스에서 직접 접근 허용X
// 메서드를 통해서 접근하면 됌(+메서드안에 조건을 설정하면 됌)
// System.out.println(s2.name + ", " + s2.grade);
s2.setGrade(95);
System.out.println(s2.getGrade());
System.out.println();
People p1 = new People("백예린");
p1.print();
People p2 = new People("쏠");
p2.print();
People p3 = new People(p2);
p3.print();
People p4 = new People("쏠");
p4.print();
// Printer printer1 = new Printer();
// System.out.println();
// printer1.print(p1); // 접근 허용이 안됌
System.out.println(p2==p3);
System.out.println(p2);
System.out.println(p3);
System.out.println(p2.equals(p3)); // https://angelplayer.tistory.com/134
System.out.println(p2.equals(p4));
System.out.println(p2.getName().equals(p3.getName()));
String str = null; // null; 과 ""; 다름
// ""; "이면 null아 아닙니다"로 나옴
String str2 = "a";
// if(str.equals(null)) {
// System.out.println("null 입니다.");
// }else {
// System.out.println("null이 아닙니다.");
// }
//
//
}
}
3) 클래스 오버로딩
public class Person2 {
String name;
int age;
// 생성자 메서드
public Person2() {
name = "홍길동";
age = 20;
}
public Person2(String name) { // 인수는 다르지만 식별자는 동일함
this.name = name; // this 는 객체이다. this는 객체주소이다.
// this 는 메서드의 호출주체이자 생성자 호출시 new에 의해 생성된 객체를 가리킨다.
}
public Person2(int age) { // 인수는 다르지만 식별자는 동일함
this.age = age;
}
public Person2(String name, int age) { // 인수는 다르지만 식별자는 동일함
this.name = name;
this.age = age;
}
// 오버로딩(Overloading) : 동일한 식별자를 가지는 메서드를 정의하는 것
// 오버로딩의 조건 1. 식별자가 동일해야한다 2. 인수의 개수가 달라야한다. 3. 인수의 타입이 달라야한다.
void work() {
System.out.println(name + "님이 일을 합나디ㅏ.");
}
void work(String tool) {
System.out.println(name + "님이" + tool + "을 사용합니다");
}
}
감사합니당🐷🐷🐷