[Java] 추상(abstract) 클래스
2022. 7. 12. 05:58
개발/JAVA
추상? 추상클래스가 부모, 실체 클래스가 자식으로 구현되어 실체 클래스는 추상 클래스의 모든 특성(필드, 메소드) 를 물려받고, 추가적인 특성을 가질 수 있다 추상클래스의 용도 공통된 필드와 메소드의 이름을 통일할 목적 ex) Telephone 클래스에서는 owner, SmartPhone클래스에서는 User로 같은 기능을 다른이름으로 하는 경우에 Phone 추상클래스를 만들어 owner 필드로 통일 실체 클래스를 작성할 때 시간 절약 공통 필드와 메소드는 추상클래스에 모두 선언해두고 다른점만 실체 클래스에 선언하여 시간 절약 public abstract class Phone { public String owner; public Phone(String owner) { this.owner = owner; }..
[Java] 타입 변환과 다형성
2022. 7. 11. 21:05
개발/JAVA
강제 타입변환? 부모타입을 자식 타입으로 변환하는 것 (처음부터 부모 타입으로 생성된 객체는 자식 타입으로 변환 불가) Parent parent = new Child(); //자동 타입 변환 Child child = (Child) parent; //강제 타입 변환 부모 변수가 참조하는 객체가 부모 객체인지 자식 객체인지 확인하는 방법 instanceof (객체가 어떤 클래스의 인스턴스인지 확인) boolean result = 좌항(객체) instanceof 우항(타입) public void method(Parent parent) { // Parent 매개 변수가 참조하는 객체가 Child인지 조사 if(parent instanceof Child){ Child child = (Child) parent; }..
[Java] 상속
2022. 7. 11. 06:43
개발/JAVA
상속? 부모 클래스의 멤버를 자식 클래스에게 물려준다 class 자식클래스 extends 부모클래스 { ... } extends 후 기본생성자 만들때 생기는 super가 부모의 기본 생성자를 호출한다 Java 상속 특징 - 여러개의 부모 클래스를 상속할 수 없다. (다중상속 허용 x) - 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외 - 부모 클래스와 자식 클래스가 다른 패키지에 존재할 경우 default 접근 제한을 갖는 필드와 메소드도 상속 x 예제 package chap07; public class Cellphone { String model; String color; void powerOn() {System.out.println("전원을 켭니다");} void..
[Java] Getter & Setter
2022. 7. 8. 06:08
개발/JAVA
객체지향 프로그래밍에서는 객체의 필드(멤버변수)를 객체 외부에서 직접적으로 접근하는 것을 막는다. 이유는 외부에서 마음대로 변경 시 객체의 무결성이 깨질 수 있기 때문 ex) 음수가 될 수없는 자동차의 속력이 외부에서 음수로 변경될 경우 myCar.speed = -100; 이런 문제점을 방지하기 위해 객체 지향 프로그래밍에서는 메소드를 통한 필드변경방법을 선호한다. 필드는 외부에서 접근할 수 없도록 막고, 메소드는 공개하여 외부에서 메소드를 통해 필드에 접근을 유도. 메소드는 매개값을 검증해서 유효한 값만 객체의 필드로 저장할 수 있기 때문이다 이 역할을 하는 메소드가 setter public void setSpeed(double speed) { this.speed = speed; } ↓ public v..
[Java] 인스턴스 멤버와 정적 멤버
2022. 7. 7. 06:54
개발/JAVA
클래스는 객체의 설계도. 클래스로부터 객체(인스턴스)는 하나가 아닌 여러 개가 만들어 질 수 있다. 이 경우 자바에서는 클래스멤버를 객체마다 모두 가지고 있는대신 인스턴스멤버와 정적멤버로 구분하여 선언할 수 있도록 한다. 인스턴스멤버? 객체마다 가지고 있는 멤버. 객체(인스턴스) 생성 후 사용할 수 있는 필드와 메소드. public class Car { //field int gas; //method void setSpeed(int speed) {...}; } 위 gas 필드와 setSpeed를 외부 클래스에서 사용하려면 new 연산자를 통해 객체를 생성해야한다. Car myCar = new Car(); myCar.gas = 10; myCar.setSpeed(60); Car yourCar = new Car..