본문 바로가기

프로그래밍언어/Java

(71)
[Java 중급] Object 배열 Object 배열Object 배열을 만들면 모든 타입의 객체를 담을 수 있다.  예제public class ObjectPolyExample2 { public static void main(String[] args) { Dog dog = new Dog(); Car car = new Car(); Object obj = new Object(); // Object 인스턴스도 만들 수 있다. Object[] objects = {dog, car, obj}; size(objects); } private static void size(Object[] objects) { System.out.println("전달된 객..
[Java 중급] Object 다형성 Object 다형성Object는 모든 클래스의 부모 클래스이다. 따라서 모든 Object는 모든 객체를 참조할 수 있다.   예제 Dog, Car 클래스를 만들어보자. 두 클래스는 서로 아무런 관려이 없다. 둘 다 부모가 없으므로 Object를 자동으로 상속받는다.  Car.javapublic class Car { public void move() { System.out.println("자동차 이동"); }}  Dog.javapublic class Dog { public void sound() { System.out.println("멍멍"); }} ObjectPolyExample.javapublic class ObjectPolyExample1 { pub..
[Java 중급] Object 클래스 Object 클래스자바에서 모든 클래스의 최상위 부모 클래스는 Object 클래스이다.  예제Parent.java// 부모가 없으면 묵시적으로 Obejct 클래스를 상속 받는다. public class Parent{ public void parentMethod() { System.out.println("Parent.parentMethod"); }} => 이 코드는 사실 public class Parent extends Object 와 같다. 최상위 부모는 항상 Object이기 때문이다.  Child.javapublic class Child extends Parent{ public void ChildMethod() { System.out.println("Child...
[Java 중급] java.lang 패키지 java.lang 패키지자바가 기본으로 제공하는 라이브러리(클래스 모음) 중에 가장 기본이 되는 것이 java.lang 패키지이다.  java.lang 패키지의 대표적인 클래스Object: 모든 자바 객체의 부모 클래스String: 문자열Integer, Long, Double: 래퍼 타입, 기본형 데이터 타입을 객체로 만든 것Class: 클래스 메타 정보System: 시스템과 관련된 기본 기능들을 제공java.lang 패키지는 모든 자바 애플리케이션에 자동으로 임포트(import) 된다. 따라서 임포트 구문을 사용하지 않아도 된다. 자바를 공부하면서 주구장창 쓰는 System.out.println 을 생각해보자. 따로 임포트 하지 않아도 쓸 수 있다.  이제 java.lang 패키지의 기능을 하나씩 알아..
[Java 기본] OCP(Open-Closed Principle) 원칙 OCP 원칙객체 지향 설계 원칙 중 하나로 OCP 원칙이 있다. Open for extension: 새로운 기능의 추가나 변경 사항이 생겼을 때, 기존 코드는 확장할 수 있어야 한다. Closed for modification: 기존의 코드는 수정되지 않아야 한다. 확장에는 열려있고, 변경에는 닫혀 있다는 뜻인데, 기존의 코드 수정없이 새로운 기능을 추가할 수 있다는 의미이다.    확장에 열려있다는 의미 Car 인터페이스가 있고 이를 구현한 차량이 있다. 새로운 차량이 추가되어도 Car 인터페이스를 사용해 자유롭게 추가된 차량을 호출할 수 있다. 이것이 확장에 열려있다는 의미이다.    * 인프런 '김영한의 실전 자바 - 기본편'을 참고하여 작성하였습니다.
[Java 기본] 좋은 객체 지향 프로그래밍이란? 객체 지향 프로그래밍객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위 즉 "객체" 들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용됩니다. 추상화캡슐화상속다형성 유연하고, 변경이 용이한 프로그램이란?레고 블럭을 조립하듯이, 또는 컴퓨터 부품 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 프로그램이다. 그럼 어떻게 유연하고, 변경이 용이하게 프로그램을 개발해야 할까? 바로 다형성을 이용하면 된다.  다형성 실세계 비유역할과 구현으로 세상을 구분해보자. 역할은 인터페이스고 구현은 ..
[Java 기본] 인터페이스 인터페이스인터페이스는 class 가 아닌 interface 키워드를 사용한다. public abstract 키워드는 생략 가능하다. 인터페이스의 메서드는 모두 public, abstract 이다. 메서드에 public abstact를 생략할 수 있다. 다중 상속을 지원한다.  인터페이스와 멤버 변수인터페이스에서 멤버 변수는 public, static, final 이 모두 포함되었다고 간주된다. 인터페이스를 통해서 상수에 접근할 수 있다고 보면된다.    예제InterfaceAnimal.javapackage poly.ex4;public interface interfaceAnimal { void sound(); //public abstact void move();} Cat.javapublic cl..
[Java 기본] 추상 클래스 추상 클래스동물(Animal)과 같이 부모 클래스는 제공하지만, 실제 생성되면 안되는 클래스를 추상 클래스라 한다. 추상적인 개념을 제공하는 클래스로서 실체인 인스턴스가 존재하지 않는다. 상속을 목적으로 사용되고, 부모 클래스 역할을 담당한다.   사용법클래스를 선언할 때 앞에 추상이라는 의미의 abstract 키워드를 붙인다. 기존 클래스와 동일하나 new AbstractAnimal()와 같이 직접 인스턴스를 생성하지 못하는 제약이 있다. abstract class AbstractAnimal {...} 추상 메서드부모 클래스를 상속 받는 자식 클래스가 반드시 오버라이딩 해야 하는 메서드를 부모 클래스에 정의할 수 있다. 이것을 추상 메서드라 한다. 추상 메서드는 선언할 때 메서드 앞에 추상이라는 의미의..