Java 개념 정리 (1)

hjseo-dev·2021년 8월 7일
0

Java

목록 보기
1/3
post-thumbnail

📍 생성자

  • 모든 클래스는 인스턴스화 될 때 생성자를 사용한다.

✏️ 생성자의 특징

  1. 리턴타입 없음
  2. 따로 만들지 않으면 컴파일 할때 자동으로 매개변수 없는 생성자가 만들어짐
  3. 매개변수가 없는 생성자 = 기본생성자
  4. 생성자를 하나라도 만들었다면 기본생성자는 자동으로 만들어지지 않음

✏️ 생성자의 역할

= 객체가 될 때 필드를 초기화 하는 역할

ex) 반드시 이름을 가지도록 하려면 클래스를 만들어야함

  public class Car{
        String name;
        int number;

        public Car(String n){  //이름이 반드시 포함되어야 한다
            name = n;
        }
    }
  
  // 아래와 같이 인스턴스를 생성함 
  public class CarExam2{
        public static void main(String args[]){

            Car c1 = new Car("소방차");
            Car c2 = new Car("구급차");
            //Car c3 = new Car(); // 컴파일 오류가 발생합니다.

            System.out.println(c1.name);

            System.out.println(c2.name);
        }
    }
    

✏️ this

= 현재 객체, 자기 자신을 뜻한다.

  public class Car{
        String name;
        int number;

        public Car(String name){
        	this.name = name;  // this를 써서 필드 네임과 매개변수를 구별한다. (매개변수 값을 필드에 대입)
    	}
    }

📍 메소드 오버로딩

= 매개변수의 유형(타입, 개수)을 다르게 하여 같은 이름의 메소드를 여러개 사용할 수 있게 함

ex)

    class MyClass2{
        public int plus(int x, int y){
            return x+y;
        }

        public int plus(int x, int y, int z){
            return x + y + z;
        }

        public String plus(String x, String y){
            return x + y;
        }
    } 
  • 변수명은 다르지만, 매개변수의 타입과 개수가 동일한 메소드를 또 정의 할 수는 없다.

📍 생성자 오버로딩

= 생성자의 매개변수의 유형을 다르게 하여 같은 이름의 생성자를 여러개 가질 수 있다.

생성자도 메소드와 마찬가지로 여러개를 선언할 수 있다.
매개변수의 수와 타입이 다르다면 여러개의 생성자를 선언할 수 있다.

ex)

public class Car {
    String name;
    int number;

    Car(String name, int number) {
        this.name = name;
        this.number = number;
    }
    Car(){  //초기화 할때 사용, 코드 중복 피함
        this("이름없음", 0);
    }
    
     Car(String name){  //이름만 받고 숫자는 초기화
        this.name = name;
        this.number = 0;
    }
}

📍 패키지(package)

= 서로 관련있는 클래스 또는 인터페이스를 묶어놓음, 클래스들이 필요할 때만 사용될 수 있도록 하고, 클래스를 패키지 이름과 함께 계층적인 형태로 사용함으로써 다른 그룹에 속한 클래스와 발생할 수 있는 클래스 이름간의 충돌을 막아줌으로 클래스의 관리를 편하게 해준다.

 com.eightcruz.javastudy.Hello 

특징

  1. java.lang패키지를 제외하고는 다른 패키지에 있는 클래스를사용하려면 import라는 구문을 적어줘야 한다.
  2. import com.eightcruz.javastudy.Hello;
    위의 코드는 com.eightcruz.javastudy패키지 아래의 Hello클래스를 사용하겠다는 것을 컴파일러와 JVM에게 알리는 것이다.
  3. 클래스 이름대신에 를 적어도 된다.
    import com.eightcruz.javastudy.
    ;

📍 상속

= 부모 클래스가 가진 것을 자식 클래스에서 쓸 수 있게 해주는 것을 말함, extends 사용

public class Car{  //부모 클래스
        public void run(){
            System.out.println("달리다.");
        }
    }
    
// 상속 받아 run도 사용 가능하다
  public class Bus extends Car{  //자식 클래스에 상속
        public void ppangppang(){
            System.out.println("빵빵");
        }       
    }
    
  
  public class BusExam{
        public static void main(String args[]){
            Bus bus = new Bus();
            bus.run();  
            //Bus class 는 아무런 코드를 가지지 않는다. 그럼에도 run 이라는 메소드를 사용하는데 문제가 발생되지 않는다. 
        }   
    }

Bus는 Car에서 물려받은 run메소드와 ppangppang메소드를 사용
부모가 가지고 있는 메소드외에 추가로 메소드를 선언하는 것을 확장하였다고 표현

0개의 댓글