멋쟁이사자 백엔드 2기
목차
2차원 배열
2차원 배열의 접근
public static void main(String[] args) {
int[][] arr = new int[3][4];
int num = 1;
// 배열에 값을 저장
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
arr[i][j] = num;
num++;
}
}
// 배열에 저장된 값을 출력
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
Java
복사
이차원 배열 응용
•
바둑, 오목, 게임(퍼즐) 등에 응용 할 수 있다.
생성자에 대한 이해
생성자 :
= 객체가 객체화 될 때 호출되는 특수 함수
= 새 키워드를 사용할 때 자바 생성자 목적은 새로 생성된 객체를 쓰기 전에 초기화하는 것
= 생성자는 해당 클래스의 인스턴스(객체)를 초기화한다.
= 일반적으로 생성자는 초기화가 필요한 객체의 필드를 초기화한다.
생성자 예제
class Pizza {
int size;
String type;
public Pizza() {
size = 12;
type = "슈퍼슈프림 ";
}
public Pizza(int s, String t) {
size = s;
type = t;
}
public class PizzaTest {
public static void main(String[] args) {
Pizza obj1 = new Pizza();
System.out.println("(" + obj1.type + " , " + obj1.size + ",)");
Pizza obj2 = new Pizza(24, "포테이토");
System.out.println("(" + obj2.type + " , " + obj2.size + ",)");
}
}
}
Java
복사
•
생성자는 클래스 이름과 같은 이름의 함수다.
•
생성자는 void, int 등의 반환형이 선언돼 있지 않아서 리턴값이 없다.
•
생성자는 중복 정의될 수 있다.
•
생성자는 객체를 초기화하는 작업만 하는 함수다.
•
생성자를 정의하지 않으면 컴파일러가 알아서 디폴트 생성자를 만들어 사용한다.
클레스와 객체 문제
연습 문제 1)
문제 설명
1) 자바 클래스를 작성하는 연습을 해보자. 다음 main() 메소드를 실행하였을 때 예시와 같이 출력되도록 TV 클래스를 작성하라.
public static void main(String[] args) {
TV myTV = new TV("LG", 2017, 32); //LG에서 만든 2017년 32인치
myTV.show();
}
LG에서 만든 2017년형 32인치 TV
Plain Text
복사
코드 보기
연습 문제 2)
문제 설명
2) Grade 클래스를 작성해보자. 3 과목의 점수를 입력받아 Grade 객체를 생성하고 성적 평균을 출력하는 main()과 실행 예시는 다음과 같다.
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.print("수학, 과학, 영어 순으로 3개의 정수 입력 >> ");
int math = sc.nextInt();
int science = sc.nextInt();
int english = sc.nextInt();
Grade me = new Grade(math, science, english);
System.out.println("평균은 "+me.average()); //average()는 평균을 계산하여 리턴
sc.close();
}
Plain Text
복사
코드 보기
패키지(Package)
•
비슷한 성격의 자바 클래스들을 모아 놓은 자바 디렉토리
•
패키지를 사용하면 비슷한 성격의 클래스들끼리 묶을 수 있어 클래스의 분류가 용이
패키지 이름 짓기 ( com.lion.team )
패키지 응용
접근 제한자 (Access Modifier)
접근 제한자에 대한 이해
•
클래스 정의 대상: public, default
•
인스턴스 변수와 메소드 대상: public, protected, default, private
접근 제어
•
public : 어디서든 인스턴스 생성이 가능
•
private : 키워드를 활용해서 외부에서 클래스 내부의 정보에 접근하지 못하도록 하는 기능
•
default : 동일 패키지로 묶인 클래스 내에서만 인스턴스 생성을 허용
접근 제한자 정리표
정보 은닉
•
실무에서는 모든 변수 무조건 private 사용
•
하나의 java 파일에서 public은 한개만 가능 (관습적으로)
•
생성자 public 문제
class Circle {
private double rad = 0;
final double PI = 3.14;
public Circle(double r) {
setRad(r);
}
public void setRad(double r) { // Setter
if (r < 0) {
rad = 0;
return;
}
rad = r;
}
public double getRad() {// Getter
return rad;
}
public double getArea() {...}
}
public class Main {
public static void main(String[] args) {
Circle c = new Circle(1.5);
System.out.println(c.getArea());
c.setRad(2.5);
System.out.println(c.getArea());
c.setRad(-3.3);
System.out.println(c.getArea());
c.rad = -4.5; // 컴파일 오류로 이어짐
System.out.println(c.getArea());
}
}
Java
복사