참조형 매개변수
package kr.or.kh08;
class Point{
int x, y;
Point(int x, int y){
this.x = x;
this.y = y;
}
}
class Circle{
double r;
Point pp; //***
Circle(Point p, double r){
pp = p; //***
this.r = r;
}
void circleInfo() {
System.out.printf("원점 : (%d, %d), 반지름 : %f", pp.x, pp.y, r);
}
}
public class CircleTest {
public static void main(String[] args) {
Circle c = new Circle(new Point(3, 5), 10.0);
c.circleInfo();
}
}
원점 : (3, 5), 반지름 : 10.000000
여기서 생성자 삭제한거랑
이렇게 바꾸면 >>
package kr.or.kh09;
class Subject{
String subjectName; //과목이름
int score; //과목점수
int subjectID; //과목코드
Subject(){
}
}
class Student{
int studentID; //학번
String studentName; //학생이름
//***
Subject korea = new Subject(); //국어
Subject math = new Subject(); //수학
Student(int id, String name){
this.studentID = id;
this.studentName = name;
// this.korea =
}
void setKorea(String subject, int score) {
korea.subjectName = subject;
korea.score = score;
System.out.println(studentName+"학생의 국어점수는 "+korea.score+"점입니다.");
}
void setMath(String subject, int score) {
math.subjectName = subject;
math.score = score;
System.out.println(studentName+"학생의 수학점수는 "+math.score+"점입니다.");
}
void getTotalScore() {
int sum = korea.score+math.score;
System.out.println(studentName+"학생의 총점은 "+sum+"점입니다.");
}
}
public class StudentTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student sLee = new Student(100, "Lee");
sLee.setKorea("국어", 100);
sLee.setMath("수학", 95);
sLee.getTotalScore();
}
}
Lee학생의 국어점수는 100점입니다.
Lee학생의 수학점수는 95점입니다.
Lee학생의 총점은 195점입니다.
자동으로 만들어줌
오른쪽마우스 > Source > Generate Getters and Setters
✨private
으로 선언된 멤버 변수 (필드)에 대해 접근
수정할 수 있는 메서드를 public으로 제공
get() 메서드만 제공 되는 경우 read-only 필드
package kr.or.kh10;
public class Birthday {
private int year; //외부에서 접근 못하게
private int month;
private int day;
private boolean isValid;
public int getYear() {
return year;
}
public void setYear(int year) { //대신 이걸로 간접접근 가능
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
if(month<1 || month>12) {
isValid = false;
} else {
this.month = month;
}
}
public int getDay() {
return day;
}
public void setDay(int day) {
if(day<1 || month>31) {
isValid = false;
} else {
this.day = day;
}
}
void setIsValid() {
isValid = true;
}
void showDate() {
if(isValid) {
System.out.println(year+"년 "+month+"월 "+day+"일입니다.");
} else {
System.out.println("유효하지 않은 날짜입니다.");
}
}
}
2019년 9월 2일입니다.