[22.12.09] 34일차 [백엔드] Java 접근지정자, get, set 메서드

W·2022년 12월 9일
0

국비

목록 보기
48/119
  • Board 클래스 생성자 연습
package test;

public class Board {
	
	// 클래스 정의 Board
	
	// 멤버변수
	// 글번호 int num, 글쓴이 String name
	// 글제목 String subject, 글내용 String content
	// 조회수 int readcount
	
	public int num;
	public String name;
	public String subject;
	public String content;
	public int readcount;
	

	// 기본 생성자 => 초기값 0, null 자동할당
	// 멤버변수 모든 값을 받는 생성자 => 초기값 할당
	public Board() {
		System.out.println("Board() 기본 생성자");
		
	}
	// 생성자 오버로딩(생성자 이름은 동일하고, 받는 변수 다름)
	public Board(int a, String n, String s, String c, int r) {
		num = a;
		name = n;
		subject = s;
		content = c;
		readcount = r;
	}
	
	// 메서드
	// 리턴값 없음 prn()
	// "글번호 num "글쓴이" name 글제목 글내용 조회수
	
	public void prn() {
		System.out.println("글번호 : " + num);
		System.out.println("글쓴이 : " + name);
		System.out.println("글제목 : " + subject);
		System.out.println("글내용 : " + content);
		System.out.println("조회수 : " + readcount);
		
		
	}
}
package test;

public class Test1 {
	public static void main(String[] args) {
		
		Board b = new Board();
		b.prn();
		
		System.out.println("=================");
		
		Board b2 = new Board(1,"홍길동", "hello", "안녕하세요", 1);
		
		b2.prn();
		

	}

}
  • 멤버변수 = 받아온 변수값
    this 자기자신 클래스 주소값
    this.멤버변수 = 받아온 변수값
	public Board(int num, String name, String subject, String content, int readcount) {
		this.num = num;
		this.name = name;
		this.subject = subject;
		this.content = content;
		this.readcount = readcount;
	}

접근지정자

- public(모두접근)
- 생략(같은 폴더내 접근)
- protected(상속관계일 때 접근)
- private(같은 클래스내에서만 접근)

  • private 이용해서 멤버변수 정하기
public class Student {
		private int num;
		private String name;
		private int html;
		private int java;
		private int db;
        }

다른 클래스에서 접근 불가능


- 멤버변수값을 저장하는 메서드 만들기

public class Student {

		  // ** 한번에 받아오기
		public void set(int num, String name, int html, int java, int db) {
		  // 멤버변수 = 값을 받아온 변수
			this.num = num;
			this.name = name;
			this.html = html;
			this.java = java;
			this.db = db;
		}
        
        // ** 하나씩 받아오기
		public void setNum(int num) {
			this.num = num;
		}
		
		public void setName(String name) {
			this.name = name;
		}
		
		public void setHtml(int html) {
			this.html = html;
		}
		
		public void setJava(int java) {
			this.java = java;
		}
		
		public void setDb(int db) {
			this.db = db;
		}
        
        }
  • 멤버변수에서 값을 가져오는 메서드
    - 메서드에서는 리턴값이 무조건 하나 여러개 값 리턴 못함
		public int getNum() {
			return this.num;
		}
		
		public String getName() {
			return this.name;
		}
		
		public int getHtml() {
			return this.html;
		}
		
		public int getJava() {
			return this.java;
		}
		
		public int getDb() {
			return this.db;
		}
  • 같은 폴더 다른 클래스에 출력하기
package test;

public class Test2 {

	public static void main(String[] args) {

		// 객체생성
		Student s = new Student();
		
		s.setNum(2);
		s.setName("이길동");
		s.setHtml(85);
		s.setJava(95);
		s.setDb(98);
		
		// 멤버변수 값을 가져와서 출력
		System.out.println("학생번호 : " + s.getNum());
		System.out.println("학생이름 : " + s.getName());
		System.out.println("html점수 : " + s.getHtml());
		System.out.println("java점수 : " + s.getJava());
		System.out.println("db점수 : " + s.getDb());

	}

}
<출력>
학생번호 : 2
학생이름 : 이길동
html점수 : 85
java점수 : 95
db점수 : 98
총점 : 278
평균 : 92.66666666666667
  • Car 클래스로 private 변수 연습하기
package test;

public class Car {
	
	
	public Car() {
	}
	
	private String carName;
	private int speed;
	
	// 멤버변수에 값을 저장하는 setCarName, setSpeed
	
	public void setCarName(String carName) {
		this.carName=carName;
	}
	
	public void setSpeed(int speed) {
		this.speed=speed;
	}
	// 멤버변수에 값을 가져오는 getCarName() getSpeed()
	public String getCarName() {
		return this.carName;
	}
	
	public int getSpeed() {
		return this.speed;
	}
	
	
	
	public int speedUp (int a) {
		speed = speed + a;
		return speed;
	}
	
	public int speedDown (int a) {
		speed = speed - a;
		return speed;
	}
	
	
	
}
package test;

public class Test3 {

	public static void main(String[] args) {
		
		
			Car c = new Car();
			
			
			
			c.setCarName("소나타");
			c.setSpeed(30);
			
			
			
			System.out.println("차이름 : " + c.getCarName());
			System.out.println("차속도 : " + c.getSpeed());
			

			
			
			System.out.println("10 증가 : " + c.speedUp(10));
			System.out.println("5 감소 : " + c.speedDown(5));
	}

}
<출력>
차이름 : 소나타
차속도 : 30
10 증가 : 40
5 감소 : 35

- private 정보 은닉 : 멤버변수 아무나 접근 못하게 막고, set, get 메서드를 통해서 접근할수 있는 메서드 준비
- 객체지향개념 : 정보 은닉과 캡슐화

  • MyDate 클래스로 연습하기
package test;

public class MyDate {
		private int year;
		private int month;
		private int day;
		
		
		public void setYear(int year) {
			this.year=year;
		}
		
		public void setMonth(int month) {
			this.month=month;
		}
		
		public void setDay(int day) {
			this.day=day;
		}
		
		public int getYear() {
			return this.year;
		}
		
		public int getMonth() {
			return this.month;
		}
		
		public int getDay() {
			return this.day;
		}
}
package test;

public class Test4 {
	public static void main(String[] args) {
		MyDate m = new MyDate();		
		m.setYear(2020);
		m.setMonth(12);
		m.setDay(20);	
        
        System.out.println(m.getYear()+"년");	
        System.out.println(m.getMonth()+"월");
        System.out.println(m.getDay()+"일");	
	}
}
  • set, get 메서드 자동 완성 하기
    Source - generate getter and setter
    단축키 alt - shift - s => r

0개의 댓글