JAVA 강의(인프런)

이제 자바에 가장 큰 특징인 객체지향에 대해 정리해보자. 객체 지향은 4개의 특징을 가지고 있다. 추상화 캡슐화 상속 다형성 객체 지향 프로그래밍은 여러 개의 독립된 단위로 본다. 즉 "객체"들의 모임으로 파악한다. 또한 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들어주어서 대규모 소프트웨어 개발에 사용된다. 즉 레고 블럭 조립하듯이 가능하다!!! 다형성(Polymorphism) 하나의 객체가 하나의 클래스에 고정된 것이 아니라, 여러 가지 타입의 객체로 취급될 수 있다는 개념. 즉 하나의 인터페이스 또는 부모 클래스를 가지고 있는 자식이 그 인터페이스나 부모의 클래스로 취급될 수 있음. 즉 자동차라는 인터페이스를 하나 만들어놓고 그 밑에 K3, 아반떼, 테슬라라는 클래스를 만들었다. ..
자바에서 abstract라는 용어를 들어본 적이 있을 것이다. 추상클래스, 추상메서드에 적용되는 용어인데 예시를 하나 들어보자. public class Animal { public void sound(){ System.out.println("동물 울음 소리"); } } 애니멀이라는 부모 클래스를 만들어놓고 자식으로 Dog라는 클래스를 만들어서 sound()를 오버라이딩 하려고 한다. public class Dog extends Animal { @Override public void sound(){ System.out.println("멍멍"); } } 근데 만약에 여기서 sound()를 실수로 오버라이딩 하지 않았다면? 부모인 Animal의 메서드인 sound()가 실행되게 된다. 이런 실수를 방지하고 A..
다형성을 직접 사용해보기 위해 동물 소리를 출력하는 예시를 살펴보자. 부모 클래스 생성 public class Animal { public void sound(){ System.out.println("동물 울음 소리"); } } 자식 클래스 생성 public class Cat extends Animal{ @Override public void sound(){ System.out.println("야옹"); } } public class Cow extends Animal{ @Override public void sound(){ System.out.println("음메"); } } public class Dog extends Animal { @Override public void sound(){ System...
Java의 특징은 객체지향. 객체지향의 특징은 추상화, 캡슐화, 상속, 다형성이 있다. 오늘은 그 중에서 다형성에 대해 알아보자. 다형성(Polymorphism) 여러 타입의 객체로 취급될 수 있는 능력을 말한다. 보통 객체는 하나의 타입으로 고정. 그런데 다형성을 사용하면 다른 타입으로도 사용이 가능하다는 뜻 다형성 참조에 대해 짚고 넘어가자. 예시로 부모와 자식의 클래스를 만들었다. public class Parent { public void parentMethod() { System.out.println("Parent.parentMethod"); } } public class Child extends Parent { public void childMethod() { System.out.println..
객체지향에서 상속이라는 개념은 매우 중요한 개념이다. 상속 : 부모(상속을 해주는) 클래스가 가지고 있는 멤버 변수와 메서드를 자식(상속을 받는) 클래스에서 그대로 사용하기 위함. 상속 받은 자식의 인스턴스를 생성하면 부모의 인스턴스도 함께 생성된다. 즉 하나의 참조값을 가리키지만, 실제로 안에는 2개의 클래스 정보가 있다. 만약에 charge()라는 메서드를 부른다고 가정해보자. 상속 관계는 부모와 자식이 모두 존재한다. 즉 부모를 통해 charge()를 찾을지, 자식을 통해서 charge()를 찾을지 정해야하는데 그건 부르는 인스턴스의 클래스로 결정이 된다.(자식으로 부르면 자식으로 찾음) 그런데 만약에 자식에 charge()라는 메서드가 없으면? 그때는 부모에서 확인한다. 만약에 부모에도 없으면 컴..
Final을 변수 앞에 붙이면 단 한 번만 값 할당이 가능하고 이후부터는 수정이 불가능해진다. 그런데 만약에 초기화를 진행할 때 Final로 계속 생성한다면? public class Car { private final int pk = 0; private String name; public Car(String name) { this.name = name; } public int getPk() { return pk; } public String getName() { return name; } } Car 클래스를 만들고 final pk를 가지는 인스턴스를 3개 만들어보고 출력해보자. public class Main { public static void main(String[] args) { Car k3 = n..
자바의 메모리 구조는 크게 3개로 구분된다. 1. 메서드 영역 : 클래스 정보를 보관. 2. 스택 영역 : 실제 프로그램이 실행되는 영역. 메서드를 실행할 때마다 하나씩 쌓인다. 3. 힙 영역 : 객체(인스턴스)가 생성되는 영역. new를 사용하면 힙 영역에 생성된다. 배열도 힙 영역에 생성 조금 더 자세하게 살펴보자. 메서드 영역 프로그램을 실행하는데 필요한 공통 데이터를 관리한다.(클래스, 메서드) 클래스 정보 : 클래스에 실행 코드(바이트), 필드, 메서드와 생성자 등 모든 실행 코드가 존재. static 영역 : static 변수들을 보관한다. 런타임 상수 풀 : 프로그램을 실행하는데 필요한 공통 리터럴 상수를 보관한다. 스택 영역 자바를 실행하면 쓰레드별로 하나의 스택이 생성된다. 각 스택 프레..
내가 몰랐던 내용을 위주로 정리해야겠다. 클래스를 만들고 생성자를 만들지 않으면 기본 생성자는 원래 만들어진다. 근데 다른 생성자를 만들어놓으면 기본 생성자를 만들어줘야한다!!!(왜 몰랐을까 이걸) this()는 생성자 코드의 첫 줄에만 가능하다. public Account(int balance, String name) { System.out.println(123); this(1244, name); } 이렇게 this()를 처음에 안 쓰면 컴파일 에러가 발생한다.
indeep
'JAVA 강의(인프런)' 카테고리의 글 목록