본 내용은 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였다고 생각한다.
객체 지향 언어라는 뜻이 많이 와닿아서 정확히 객체에 잘 지정되어야 컴파일이 정상적으로 되다 보니
구조 자체가 조금 어려웠다는게 유의점.
후에 다시 공부해야 할 때 어떤 객체에 접근을 하는지 정확히 해야한다는 점이 가장 와닿았다고 생각한다.
'IT > Java' 카테고리의 다른 글
[Java] 기초 내용 정리 (조건문, 반복문) (0) | 2023.03.24 |
---|---|
[Java] 기초 내용 정리 (자바의 특징, 변수, 주석, 데이터 타입) (0) | 2023.03.24 |
댓글