Java_기초_Day5_1

임정민·2022년 10월 25일
0

언어공부

목록 보기
5/10
post-thumbnail

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 + "을 사용합니다");
	}
		
	
}



감사합니당🐷🐷🐷

profile
https://github.com/min731

0개의 댓글