[java] 접근 제어

공부·2022년 10월 14일
0
구분동일한 클래스패키지자식 클래스전체
publicOOOO
protected
privateOXXX
defaultOOXX
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);
profile
리액트

0개의 댓글