구분 | 동일한 클래스 | 패키지 | 자식 클래스 | 전체 |
---|---|---|---|---|
public | O | O | O | O |
protected | ||||
private | O | X | X | X |
default | O | O | X | X |
import java.util.*;
class Employee{
private String name;
private int salary;
int age;
}
public Employee(String n, int a, double s){
name = n;
age = a;
salary = s;
}
public String getName(){
return name;
}
// class 내부에서만 사용 가능, main에서 사용 불가능.
private int getSalary(){
return salary;
}
int getAge(){
return age;
}
}
getter/setter
: 필드의 값을 설정하거나 꺼내올 수 있다.
: 값이 잘못 된 경우 선택해서 값을 선택할 수 있다.
: 읽기만 가능한 필드를 만들 수 있다. (접근자만 제공)
class name
private String name;
private int balance;
private int regular;
public int getName() { return name; }
// 유효한 값인지 체크, 무분별한 데이터가 세팅되지 못 하게 막음.
public void setName(String name) { this.name = name; }
public int getBalance() { return balance}
public void setBalance(int balance) { this.balance = balance }
}
class Car {
private String color;
private int speed;
private int gear;
public String getColor(){
return color;
}
public void setColor(String c){
color = c;
}
public int getSpeed() {return speed;}
public int SetSpeed(int speed) {this.speed = speed;}
public int getGear() {return gear;}
public int SetGear(int gear) {this.gear = gear;}
# OverRriding
public Stirng toString(){
return "Car [color = " + color + " + ", speed = " + speed + ", gear = " + gear + "]";
}
public static void main(String[] args){
Car myCar = new Car();
/*
보안 수준 때문에 접근 불가능
myCar.color = "red";
myCar.Speed = 100;
myCar.gear = 1;
System.out.print(myCar.color);
System.out.print(myCar.speed);
System.out.print(myCar.gear);
*/
myCar.setColor("red");
myCar.setSpeed(100);
myCar.setGear(1);
System.out.print(myCar.getColor();
System.out.print(myCar.getSpeed());
System.out.print(myCar.getGear());
}
JAVA의 String 관리법
동일한 문자가 있으면 새로 만들지 않고 동일 문자 주소를 가리킴.
자바는 메모리를 세 개로 만들어 관리함.
Heap이라는 곳에 객체를 만들어서 따로 관리함. new 연산자를 썼을 경우 객체를 새로 만듦.
증명 예시) String의 주소 비교
public calss StuTest{
public static void main(String[] args){
String s1 = new String("Java");
String s2 = new String("Java");
String s3 = "Java";
String s4 = "Java";
System.out.println(s1==s2); //false
System.out.println(s1==s3); //false
System.out.println(s3==s4); //true
}
}
번외#1
String method : chatAt() # 첫 문자 추출
String s = "Hello World";
char c = s.charAt(0);
번외#2
String method : equals() # string 내용 비교
String s1 = "Apple";
String s2 = "Apple"; // s1과 s1는 주소가 동일함.
String s3 = new String("Apple");
System.out.println(s1.equals(s2));
System.out.println(s2.equals(s3));
번외#3
String method : indexOf() # string이 어디에 있는지 확인
String s = "The cat is on the table";
int index = s.indexOf("table");
if(index == -1_
System.out.println("table은 없습니다.");
else
System.out.println("table의 위치 : " + index);
번외#4
String method : compareTo mothod # 문자열이 같으면 0, 먼저 나오면 음수, 나중이면 양수, 대개 알파벳을 정렬할 때 사용
String a = "java";
String b = "jasa";
int res = a.compareTo(b);
if(res == 0)
System.out.println("the same");
else if(res < 0)
System.out.println(a + "<" + b);
else
System.out.println(b + "<" + a);