[앱 스쿨 2기 : Android] 2주차 2023.05.01 (Java)

hxeyexn·2023년 5월 5일
0
post-thumbnail

📅 2023.05.01

📂Java21_Package ~ 📂Java28_Polymophism

프로그래밍 순서

  1. 문제분석
  2. 기능정리
  3. 기능 구현을 위해 필요한 변수 정의
  4. 클래스를 설계(주석)
  5. 클래스 내부의 변수와 메서드 정의


Package

Java에서 Java 파일과 class 파일들을 폴더 단위로 관리하기 위한 목적으로 사용

  • 같은 패키지에 있는 클래스들은 자유롭게 사용 가능
  • 다른 패키지에 있는 클래스들은 import를 사용하여 클래스가 어떤 패키지에 있는지 알려줘야 함
  • 패키지명은 소문자로

📂Java21_Package


Array

1개의 변수에 여러 개의 값을 순차적으로 저장할 때 사용

// 정수형 기억장소 10개를 관리하는 배열
int [] array1 = new int[10];
// 값을 담는다
array1[0] = 100;
array1[1] = 200;
array1[2] = 300;

// 배열 생성시 관리할 값을 넣어줌
int [] array2 = {1, 2, 3};

for in 구문

배열 등과 같이 순서를 가지고 데이터를 관리하는 요소에 대해 반복문을 돌리고자 할 때 사용

for (int value : array2) {
	System.out.printf("value : %d\n", value);
 }

객체의 ID를 담을 배열 생성

// 객체의 ID를 담을 배열 생성
TestClass1 [] array3 = new TestClass1[3];
// 위의 배열은 객체의 ID를 담을 수 있는 참조 변수 3개를 가진 배열을 생성한 것
// 이에 배열 생성 후 객체를 생성하여 담아줘야 함
array3[0] = new TestClass1();
array3[1] = new TestClass1();
array3[2] = new TestClass1();

for (TestClass1 t1 : array3) {
	System.out.printf("t1 : %s\n", t1);
}

📂Java23_Array


Constructor (생성자)

클래스를 통해 객체를 생성할 때 무조건 동작하는 요소

  • 생성자는 반환 타입이 없고 클래스 이름과 동일하게 작성
  • 클래스를 통해 객체를 생성할 때는 반드시 생성자를 지정

생성자가 없는 클래스

  • 클래스를 만들 때 생성자를 작성하지 않으면 기본 생성자가 자동으로 추가
  • 기본 생성자 : 클래스이름(){ }
class TestClass1 {

}

매개변수가 없는 생성자를 가지는 클래스

class TestClass2 {
	// 생성자
    public TestClass2() { System.out.println("TestClass2의 생성자"); }
}

매개변수가 있는 생성자를 가지는 클래스

class TestClass3 {
	public TestClass3 (int a1, int a2) {
    	System.out.println("a1 : %d, a2 : %d\n", a1, a2);
    }
}

this

  • 객체의 멤버에 접근할 때 사용
class Student {
	String name;
    int grade;
    
    public StudentClass(String name, int grade) {
    	this.name = name;
        this.grade = grade;
    }
}

📂Java25_Constructor


Overloading

메서드나 생성자를 작성할 때 매개변수의 형태를 다르게 하여 같은 이름으로 여러개를 만들 수 있도록 제공되는 개념

생성자 Overloading

  • 생성자에서 다른 생성자를 호출할 때는 this()를 사용
  • 생성자 내에서 첫 번째 코드여야 함
class TestClass1 {

	int memberA;
    int memberB;
    
    public TestClass1() {
    	this(100, 200)
    }
    
    public TestClass1(int memberA) {
    	this(memberA, 200)
    }
    
    public TestClass1(int memberA, int memberB) {
    	this.memberA = memberA;
        this.memberB = memberB;
    }
    
}

메서드 Overloading

  • 메서드도 이름을 동일하게 하고 매개변수의 형태를 다르게 하여 메서드를 여러개 만들 수 있음
class TestClass1 {
	
    public int add(int a1, int a2) { return a1 + a2; }
    public long add(long a1, long a2) { return a1 + a2; }
    public double add(double a1, double a2) { return a1 + a2; }
    
}

가변형 매개변수

  • 타입이 같은 매개변수를 가지고 있는 메서드를 무한정 만들수 없기 때문에 제공되는 개념
  • 매개 변수를 작성할 때 ... 을 붙혀주면 전달 되는 값들을 배열로 만들어 사용할 수 있음
class TestClass1 {

	public int add2(int ... a1) {
    	int total = 0;
        
        for (int value : a1) {
        	total = total + value;
        }
        
        return total;
    }
}

📂Java26_Overloading


Inherit (상속)

다른 클래스의 멤버 변수나 멤버 메서드를 자기 것 처럼 물려받아 사용하는 개념

자바에서 상속을 사용하는 이유

  1. 코드 중복 최소화
  2. 부모를 통해 자식에 접근

Sub Class (자식 클래스)

  • 상속을 받는 쪽
  • 자식 클래스의 객체를 생성하면 부모 클래스의 객체도 같이 생성
  • 부모 클래스의 요소를 자기 것인 것 처럼 사용 가능

Super Class (부모 클래스)

  • 상속해 주는 쪽
  • 자바의 모든 클래스는 제한을 두지 않으면 부모 클래스가 될 수 있음

상속에서의 생성자

  • 클래스의 객체를 생성하면 생성자가 자동으로 호출
  • 이 때, 생성자에서 부모 클래스의 생성자를 자동으로 호출해주며
  • 자동으로 호출되는 생성자는 매개변수가 없는 생성자

extends

  • 클래스를 만들 때 특정 클래스를 상속 받기 위해 사용
  • class 클래스이름 extends 부모클래스

super

  • 부모의 생성자를 명시적으로 지정
  • 부모의 생성자를 선택하고 싶다면 사용
  • 매개변수가 있는 생성자를 선택해 객체를 생성한다고 하더라도 부모의 생성자가 호출을 명시하지 않으면 부모의 생성자 중 매개변수가 없는 기본 생성자가 호출

📂Java27_Inherit


Polymophism (다형성)

객체 지향에서 다형성의 의미는 생성된 객체의 형태가 다양하다는 의미로 사용

  • 참조변수를 통한 객체 접근

    • 클래스로부터 객체를 생성하고 생성된 객체의 주소 값을 참조 변수에 넣어 줄 때 참조 변수의 타입에 따라 생성된 객체에 접근 할 수 있는 영역은 달라짐

📂Java28_Polymophism


profile
Android Developer

0개의 댓글