본문 바로가기
TIL

220302: JAVA 클래스, 생성자

by 김비누! 2022. 3. 2.

📝자바 클래스(class) 란?

필드, 생성자, 메소드로 구성됨, 클래스는 곧 자료형(사용자 정의 자료형)

  • 필드: 객체의 데이터가 저장되는 곳, 속성
  • 생성자: 객체 생성시 초기화 담당
  • 메소드: 객체의 동작, 기능

 

📝자바 일반 클래스, 실행 클래스

  • 일반 클래스: 메인 메소드 존재하지 않는 클래스
  • 실행 클래스: 메인 메소드 존재하는 클래스

 

📝자바 static keyword

  • 공유되는 값에 사용, 바뀌지 않는 값에 final과 함께 사용
  • 클래스의 인스턴스를 만들지 않아도 존재
  • static 메모리 영역에 정적으로 할당됨
  • static 메소드에서는 none static 필드나 메소드에 접근 불가
    • none static보다 먼저 생성됨
public class MethodTest {
	
	static double division(int n1, int n2) {
		double result = (double)n1 / n2;
		return result;
	}

	public static void main(String[] args) {
		System.out.println(division(10,3));	//methodTest 인스턴스 만들지 않아도 사용가능
	}

}

참고

https://jobjava00.github.io/language/java/basic/static/

 

📝자바 생성자

클래스 이름과 같은 메소드, 반환 자료형이 없다.

new 연산자와 함께 쓰이며 인스턴스 초기화 담당

 

defalut 생성자로 

className(){
	super();
}

자동으로 생성된다.

생성자를 작성하게 되면 default 생성자는 생성되지 않음

 

 

아래는 student class의 생성자로, 학생 번호와 이름을 매개변수로 가진다.

Student(int studentNo, String name){
	this.studentNo = studentNo; 
	this.name = name;
}

참고

https://maktooob.tistory.com/35

 

📝자바 Getter, Setter 메소드

클래스 내의 변수는 private으로 선언하여 외부에서 직접 접근을 막는다.

정보 은닉, 데이터 무결성 구현

 

setter는 변수 값을 할당하는 메소드로 매개변수가 있다.

getter는 변수 값을 리턴하는 메소드로 리턴값이 있다.

public class Student {
	private String name;
	private int grade;
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	int getGrade() {
		return this.grade;
	}
	
	boolean setGrade(int grade) {	//들어오는 값을 검사하여 set
		if(grade < 0)
			return false;
		
		this.grade = grade;
		return true;
	}
}

setGrade 메소드에서 인자 값이 0보다 클 때만 클래스의 grade 변수에 값이 할당되도록 만들었다.

 

 

student class의 getter, setter 사용

public class TestStudent {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student s1 = new Student(1, "김모모");
		Student s2 = new Student();
		
		s2.name = "홍길동";	//에러 발생, private 접근 제한자로 인해 직접 접근 불가
		
		// setter 동작
		if(s1.setGrade(1)) {
			s1.printGrade();
			System.out.println(s1.getName() +" "+ s1.getGrade() + " set 성공\n");
		}
		if(s1.setGrade(-1)) {		//false
			s1.printGrade();
			System.out.println(s1.getName() +" "+ s1.getGrade() + " set 성공2\n");
		}
        
        System.out.println(s2.getGrade());	//초기값 0

	}

}

출력

setGrade 메소드를 boolean 타입으로 만들어 set 메소드가 성공했는지 실패했는지 확인할 수 있게 하였다.

 

참고

https://maktooob.tistory.com/35

https://mozi.tistory.com/466

 

💻자바 백슬래시 출력(백준 10171)

\(백슬래시)와 따옴표는 특수한 문자여서 일반적으로 출력할 수 없다. 자바 뿐만 아니라 c, 파이썬에서도 동일함.

\ 출력을 위해서는 \\ 을 입력한다.

 

아래 코드는 \, \n(줄바꿈문자), ****를 출력한다.

public class Main{
    public static void main(String[] args){
        System.out.println("\\\n****");
    }
}

출력

 

백준 10171

public class Main{
    public static void main(String[] args){
        System.out.println("\\    /\\\n )  ( \')\n(  /  )\n \\(__)|");
    }
}

출력

냥냥

 

 

🎯ETC

  • java에서는 0을 false로 인식하지 X
int y = 8;
while(--y){	//error 발생
	...
}

while(--y != 0){ //사용가능
	...
}
  • 인스턴스는 실체화(메모리에 할당)된 객체

 

☕️ 잡담

자바 기억안나는게 너무 많다

허리아파서 쉬는시간마다 스트레칭 함

기본만 되면 최대한 취업하겠다는 마인드로!

그리고 이력서 빨리 작성 시작하기.....3월 12일부터 시작하자🔥🔥

 

+내일 할일

티스토리 코드블럭 변경

플러그인에 있다!!! hooray

 

 

 

'TIL' 카테고리의 다른 글

220307: 자바 배열  (0) 2022.03.07
220304  (0) 2022.03.04
220303: 자바 가위바위보  (0) 2022.03.03
220228: JVM 개념, JAVA method 개념  (0) 2022.02.28
TIL 작성규칙  (0) 2022.02.28

댓글