-
이것이 자바다 정리 6장 (클래스)JAVA/JAVA 2022. 6. 21. 17:38
객체지향 프로그래밍
부품 객체를 먼저 만들고 이것들을 하나씩 조립해 완성된 프로그램을 만드는 기법
객체지향 프로그래밍의 특징
캡슐화, 상속, 다형성
캡슐화
객체의 내부 구조를 알지 못하게하고, 객체가 제공하는 필드와 메소드만 이용할 수 있게 한다.
상속
부모 객체가 필드와 메소드를 자식 객체에게 물려주는 것을 말한다.
- 자식 객체에서는 반복된 코드가 줄어듬.- 부모 클래스 코드 변경시 자식에도 같이 적용됨.
다형성
같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말한다.
예를 들어 타이어타입에 한국 타이어/금호 타이어 객체를 대입하는 것을 말한다.
객체/클래스/ 인스턴스
클래스는 설계도, 클래스에는 객체를 생성하기 위한 필드와 메서드로 정의되어 있음.
클래스로부터 만들어진 객체를 해당 클래스의 인스턴스라고 함.
클래스 선언
필드, 생성자, 메소드
필드 : 객체의 고유한 데이터, 정보를 저장하는 곳이다. 변수와 다른 점은 필드는 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재한다는 점이다.
생성자 : 객체 생성 시 초기화를 담당한다.
생성자 오버로딩 : 생성자의 다양화를 위해 매개 변수를 달리하는 생성자를 여러 개 선언하는 것
예시 : String method1(String one); String method1(String one, int two);
this()는 자신의 다른 생성자를 호출하는 코드로 반드시 생성자의 첫줄에서만 허용된다.
public class Car { String model; String color; Car(String model) { this(model,"빨간색"); } Car(String model, String color) { this.model = model; this.color = color; } void printCar() { System.out.println(model + " " + color); } }
public class CarP { public static void main(String[] args) { // TODO Auto-generated method stub Car car = new Car("제네시스"); car.printCar(); // 제네시스 빨간색 } }
정적 멤버와 Static
정적 멤버는 클래스에 고정된 멤버로써 객체 생성없이 사용할 수 있는 필드와 메소드를 말함.
public class Calculator { static double pi = 3.14159; static int plus(int x, int y) { return x + y; }; static int minus(int x, int y) { return x - y; }; public static void main(String[] args) { double i = Calculator.pi; } }
public class CalculatorP { public static void main(String[] args) { double i = Calculator.pi; double plus = Calculator.plus(10, 20); double minus = Calculator.minus(20, 10); System.out.println(i); // 3.14159 System.out.println(plus); // 30.0 System.out.println(minus); // 10.0 } }
싱글톤(Singleton)
- 전체 프로그램에서 단 하나의 객체만 만들도록 보장하는 경우가 있는데, 이 객체를 싱글톤이라고 한다.
public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() {}; static Singleton getInstance() { return singleton; } }
public class SingletonExample { public static void main(String[] args) { Singleton obj1 = Singleton.getInstance(); Singleton obj2 = Singleton.getInstance(); if(obj1 == obj2) { System.out.println("같은 Singleton 객체입니다."); // 이걸 탐 } else { System.out.println("다른 Singleton 객체입니다."); } } }
final 필드와 상수
final 필드
- final필드란 초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없다는 것이다.
- 객체 마다 가지는 불변의 인스턴트 필드라고 할 수 있다.
상수(static final)
- 상수는 불변의 값을 뜻한다.
- final 필드와 다른 것은,객체 마다 저장할 필요가 없는 공용성을 띠며, 여러 값으로 초기화될 수 없다는 것이다.
- static final 필드는 객체마다 저장되지 않고, 클래스에만 포함된다. 또한 초기값이 저장되면 변경할 수 없다.
접근제한자
클래스 및 클래스의 구성 멤버에 대한 접근을 제한하는 역할
public : 모든 클래스 접근
protected : 같은 패키지와 자식 클래스만 접근 가능
default : 같은 패키지만 접근 가능
private : 외부 클래스 접근 불가능
'JAVA > JAVA' 카테고리의 다른 글
이것이 자바다 7장 상속 (0) 2022.06.23 이것이 자바다 정리 5장 (참조 타입) (0) 2022.06.21