본문 바로가기
IT/Java

[Java] 기초 내용정리 (자바의 클래스와 객체, 인터페이스) - ★

by dwoi 2023. 3. 24.

본 내용은 Java의 자바의 클래스와 객체, 그리고 인터페이스에 대해 학습한 내용을 정리한 글임을 밝힘.

 

목차

     


    Java

     


    1. 클래스의 구성

    1.1. 필드 변수(Field variable)

    - 클래스의 내부에 저장하고 있는 데이터
    - 생성자(constructor)와 수정자(setter)를 통해서 변경함
    - 변수는 정적인 상태를 의미하기 때문에 명사 이름을 주로 사용함

     

    1.2. 메소드(method)

    - 클래스에서 동적인 활동을 지시하는 매개체
    - 메서드는 액션을 의미하기 때문에 동사 이름을 주로 사용함

     

    1.3. 상속 (extends)

    - Class는 또다른 Class에서 추가적인 확장을 할 수 있음
    자바에서는 다중상속을 허용하지 않음


     

    2. 클래스의 인스턴스화

    2.1. New 연산자

    - 클래스를 인스턴스(객체)화 시키는 연산자 

    • 설계도와 같이 추상적이였던 걸 실제로 만들어 내는 작업이라고 이

    - New를 하게 되면, 해당 객체를 참조할 수 있고, GC 대상이 됨

     

    2.2. 생성자 (Constructor)

    - New 연산자를 사용할 때, 호출하는 특별한 메서드
    - 아무것도 선언하지 않으면, Argument가 없는 생성자가 자동으로 생김
    - 클래스 이름과 동일한 이름의 메서드

    → 클래스로부터 객체를 만들어내는 역할이지만 가장 중요한 건 만들어내면서 필드 변수를 초기화시켜주는 것.

     

    2.3. this, super 키워드

    this

    - 해당 명령문을 실행하고 있는 자기 클래스를 의미함

     

    super 

    - 해당 명령문을 실행하고 있는 클래스의 부모 클래스를 의미함.


     

    3. 클래스와 인스턴스의 차이

    • 비유적인 예시
      • 클래스는 그릇을 만드는 틀
      • 인스턴스는 이제 틀에 재료를 넣고 찍어 나온 것들
        • 즉 인스턴스는 클래스라는 추상적인 개념이 실체화되어 눈에 보이는 객체라고 이

     

    4. 자바의 인터페이스

    4.1. 인터페이스의 필요성

    - 모든 메서드가 추상메서드로 선언됨
    - 모든 변수는 상수(constant)로 선언됨
    - 느슨한 연결(coupling)을 위해 사용함
    - 인터페이스로의 형변환이 자동으로 이루어짐

    4.1.1. 인터페이스란?

     

    5. 인터페이스의 구현

    5. 1. 인터페이스의 구현

    public interface Animal {
        public void makeSound();
    }

    Animal이라는 interface 형성하고 makeSound()라는 추상적인 메소드를 만들어둠.

     

    public class Dog implements Animal {
        public void makeSound(){
            System.out.println("Woof");
        }
    }
    public class Cat implements Animal {
        public void makeSound(){
            System.out.println("Meow");
        }
    }

    Animal 인터페이스에 Dog와 Cat이라는 클래스를 만들어줬고 추상적으로 선언해두었던

    makeSound() 라는 함수의 로직은 {}안에 각각 개의 짖음 소리인 Woof와 Meow라는 값을 출력하게 만들어 준다고 가정

    public class helloworld
    {
        public static void main(String[] args)
        {
            Animal cat = new Cat();
            cat.makeSound();
    
            Animal dog = new Dog();
            dog.makeSound();
        }
    
    }

    Helloworld라는 클래스에서 이제 main함수로

    Cat 클래스의 인스턴스를 Animal 인터페이스의 참조 변수 cat에 대입하고

    Cat 객체에서 구현한 makeSound() 메소드를 호출하는 식으로 구성됨.

    5.2. 인터페이스의 상속

    public interface User extends Speakble{
    	코드1;
    }

    여러가지의 인터페이스 상속도 가능!

    Default 메소드의 활용

    • 인터페이스에서는 기능에 대해서 선언만 가능하기 때문에 로직을 포함시킬 수 없지만

    메소드 선언 시에 default를 명시하게 되면 인터페이스 내부에서도 로직이 포함된 메소드를 선언해서 활용 가능하다.\

     

    마무리

    Python, Java, C언어의 기초적인 요소만 훑었는데

    가장 어려웠던 건 Java였다고 생각한다.

    객체 지향 언어라는 뜻이 많이 와닿아서 정확히 객체에 잘 지정되어야 컴파일이 정상적으로 되다 보니 

    구조 자체가 조금 어려웠다는게 유의점. 

    후에 다시 공부해야 할 때 어떤 객체에 접근을 하는지 정확히 해야한다는 점이 가장 와닿았다고 생각한다.

    댓글