분류 전체보기 (318) 썸네일형 리스트형 [Java] 다형적 참조(업캐스팅 vs 다운캐스팅) 객체지향 프로그래밍의 대표적인 특징으로는 캡슐화, 상속, 다형성이 있습니다. 그 중에 다형성은 객체지향 프로그래밍의 꽃이라고 불립니다. 캡슐화나 상속은 직관적으로 이해하기 쉽지만 다형성은 제대로 이해하기도 어렵고, 잘 활용하기는 더 어렵습니다. 하지만 좋은 개발자가 되기 위해서는 다형성에 대한 이해가 필요합니다. 다형성(Polymorphism)은 이름 그대로 "다양한 형태", "여러 형태" 를 뜻합니다. 프로그래밍에서 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 뜻합니다. 보통 하나의 객체는 하나의 타입으로 고정되어 있습니다. 그런데 다형성을 사용하면 하나의 객체가 다른 타입으로 사용될 수 있다는 뜻입니다. 다형성을 이해하기 위해서는 크게 2가지 핵심 이론을 알아야 합니다. 다형적 참조.. [Java] 상속이 왜 필요할까? (feat.오버라이딩) 예제 코드로 상속 관계가 왜 필요한지 이해해봅시다.package extends1.ex1;public class ElectricCar { public void move() { System.out.println("차를 이동합니다."); } public void charge() { System.out.println("충전합니다."); }}package extends1.ex1;public class GasCar { public void move() { System.out.println("차를 이동합니다."); } public void fillUp() { System.out.println("기름을 주유합니다."); }}p.. [Java] static final final 키워드는 이름 그대로 끝! 이라는 뜻입니다. 변수에 final 키워드가 붙으면 더는 값을 변경할 수 없습니다. 참고로 final은 class, method를 포함한 여러 곳에 붙을 수 있는데요. 지금은 변수에 붙는 final 키워드를 알아봅시다. public class FinalLocalMain { public static void main(String[] args) { //final 지역 변수1 final int data1; data1 = 10; //최초 한번만 할당 가능 //data1 = 20; //컴파일 오류 //final 지역 변수2 final int data2 = 10; //data2 = 20; //컴파일 오류 method(10); } static void method(final in.. [Java] static 에 대해서 궁금하다면 지난 게시글에 자바의 자료 구조 스택(Stack)과 큐(Queue)에 대해서 알아보았습니다.아직 자료 구조가 무엇인지 모르는 분들은 아래 링크를 참고해주시기 바랍니다. Java 자료 구조 스택자바의 메모리 구조 자바의 메모리 구조는 크게 메서드 영역, 스택 영역, 힙 영역 3개로 나눌 수 있습니다. 메서드 영역: 클래스 정보를 보관한다. 이 클래스 정보가 붕어빵 틀이다. 스택 영역: 실madeprogame.tistory.com static 변수이번에는 새로운 키워드인 static 키워드에 대해서 학습해보겠습니다.static 키워드는 주로 멤버 변수와 메서드에 사용됩니다.먼저 멤버 변수에 static 키워드가 왜 필요한지 한번 알아봅시다. 특정 클래스를 통해서 생성된 객체의 수를 세는 단순한 프로그램입니다.. [Java] 자료 구조 스택 자바의 메모리 구조 자바의 메모리 구조는 크게 메서드 영역, 스택 영역, 힙 영역 3개로 나눌 수 있습니다. 메서드 영역: 클래스 정보를 보관한다. 이 클래스 정보가 붕어빵 틀이다. 스택 영역: 실제 프로그램이 실행되는 영역이다. 메서드를 실행할 때 마다 하나씩 쌓인다. 힙 영역: 객체(인스턴스)가 생성되는 영역이다. new 명령어를 사용하면 이 영역을 사용한다. 쉽게 이야기해서 붕어빵 틀로부터 생성된 붕어빵이 존재하는 공간이다. 배열도 이 영역에 생성된다. 메서드 영역(Method Area): 메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 모든 영역에서 공유한다. 클래스 정보: 클래스의 실행 코드(바이트 코드), 필드, 메서드와 생성자 코드등 모든 실행 코드가 존재한다... [Java] 접근 제어자 자바는 public, private 같은 접근 제어자(access modifier)를 제공합니다. 접근 제어자를 사용하면 해당 클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한할 수 있습니다. 그렇다면 자바에서 접근 제어자가 왜 필요할까요? 예제를 들어 접근 제어자가 필요한 이유에 대해 알아봅시다! 여러분은 스피커에 들어가는 소프트웨어를 개발하는 개발자라고 합시다. 스피커의 음량은 절대로 100을 넘으면 안된다는 요구사항이 있습니다. (100을 넘어가면 스피커의 부품들이 고장난다) 스피커 객체를 먼저 만들어볼까요? 스피커는 음량을 높이고, 내리고, 현재 음량을 확인할 수 있는 단순한 기능을 제공하고 있습니다. 요구사항에 맞춰 스피커의 소프트웨어를 만들어봅시다! public class S.. [Java] 패키지 저희가 쇼핑몰 시스템을 개발한다고 가정해봅시다. 프로그램이 작고 단순해서 클래스가 몇개 없다면 크게 고민할 거리가 없을겁니다. 하지만 기능이 점점 추가되어서 프로그램이 아주 커지게 된다면 어떻게 될까요? 매우 많은 클래스가 등장하면서 관련있는 기능들을 분류해서 관리하고 싶을겁니다. 컴퓨터는 보통 파일을 분류하기 위해 폴더, 디렉토리라는 개념을 제공합니다. 자바도 이런 개념을 제공하는데, 이것이 패키지 입니다. 패키지는 이름 그대로 물건을 운송하기 위한 포장 용기나 포장 묶음을 뜻합니다. 패키지를 사용하는 경우 항상 첫줄에 패키지 이름을 적어주어야 한다. package pack; public class Data { public Data() { System.out.println("패키지 pack Data 생.. [Java] 당신만 모르는 생성자가 필요한 진짜 이유 객체를 생성하는 시점에 어떤 작업을 하고 싶다면 생성자(Construct)를 이용하면 됩니다. 생성자를 알아보기 전에 먼저 생성자가 왜 필요한지 코드로 알아보겠습니다. public class MemberInit { String name; int age; int grade; } public static void main(String[] args) { MemberInit member1 = new MemberInit(); member1.name = "user1"; member1.age = 15; member1.grade = 90; MemberInit member2 = new MemberInit(); member2.name = "user2"; member2.age = 16; member2.grade = 80; .. [Java] 절차 지향 VS 객체 지향 프로그래밍 방식은 크게 절차 지향 프로그램과 객체 지향 프로그램으로 나눌 수 있습니다. 절차 지향 프로그래밍 절차 지향 프로그래밍은 이름 그대로 절차를 지향한다. 쉽게 이야기해서 실행 순서를 중요하게 생각하는 방식이다. 절차 지향 프로그램의 흐름을 순차적으로 따르며 처리하는 방식이다. 즉, "어떻게"를 중심으로 프로그래밍 한다. 객체 지향 프로그래밍 객체 지향 프로그래밍은 이름 그대로 객체를 지향한다. 쉽게 이야기해서 객체를 중요하게 생각하는 방식이다. 객체 지향 프로그래밍은 실제 세계의 사물이나 사건을 객체로 보고, 이러한 객체들 간의 상호작용을 중심으로 프로그래밍하는 방식이다. 즉, "무엇을" 중심으로 프로그래밍 한다. 두 방식의 차이 절차 지향은 데이터와 해당 데이터에 대한 처리 방식이 분산되어 있.. [Java] 변수의 초기화, null 변수의 종류 멤버 변수(필드): 클래스에 선언 지역 변수: 메서드에 선언, 매개변수도 지역변수의 한 종류이다. 멤버 변수, 필드 예시 public class Student{ String name; int age; int grade; } name, age, grade는 멤버 변수이다. 지역 변수 예시 public class ClassStart3 { public static void main(String[] args) { Student student1; student1 = new Student(); Student student2 = new Student(); student1, student2 는 지역 변수이다. public class MethodChange1 { public static void main(S.. 이전 1 ··· 25 26 27 28 29 30 31 32 다음