728x90

JAVA/Bootcamp 자바 23

부모, 자식, 상속, protected, extends

부모: 상위 클래스, 슈퍼클래스, 자식 : 서브클래스, 파생클래스 부모가 자식에게 상속을 해줬다 -> 언제든 쓸 수 있다. 하지만 부모 소유이다. 상속? 클래스를 계층화 하는 것을 상속이라고 한다. 상속하는 이유? - 객체를 설계하다 보면 비슷한 클래스들끼리 중복요소가 생긴다. ex)책이라는 클래스에 꼭 들어가야 하는 것(저자, 제목, 출판사, 페이지 )을 가진 부모 클래스가 이것을 자식에게 상속해주면 자식은 자유롭게 쓸 수 있다. 상속시 자식은 extends 라는 키워를 사용한다. 자바는 단일상속만을 지원한다. 부모를 한 명으로 두고 사용하는 것을 단일상속이라고 한다. 상속에서 private를 사용하면 상속의 의미가 퇴색된다. private인데 상속을 어떻게 해 부모의 기억공간을 자식에게 상속하고 싶다..

class, object, instance

클래스, 오브젝트, 인스턴스는 서로 비슷한 개념이다. 모두 객체를 나타낸다. 명확히 구분하기는 어렵다 class: 객체를 모델링, 설계하는 도구, 새로운 자료형을 만드는 도구 student = std 를 모델링 하는 도구 설계가 끝나면 오브젝트를 만든다. Object: 클래스를 통해 선언되는 변수 st를 오브젝트라고 부른다. 객체변수 라고 부르기도 한다 int a = 변수 , student st = 는 객체변수 instance: 객체의 구체적인 모습, 실체. st = new Student(); 메모리에 만들어진 것을 instance라고 한다. 구체적인 실체를 지목. 다른 객체들과 구분이 되는 시점. 객체가 구체적인 상태를 가리키는 상태 ClassObjectInstance 클래스 생성 Student st1..

JVM의 메모리영역, 객체 생성과 static

JVM의 메모리 영역은 네개로 나뉜다. 메서드: static zone, none static zone 으로 나뉜다. 프로그램 종료 시 자동 소멸된다 Heap: 객체가 생성된다. ex) array, class.. 사용이 끝나면 소멸 되어야 함. garbage collector가 주기적으로 해줌. 포인터가 없어지면 쓰레기값이 된다. 포인터는 스택에 있고 스택은 프로그램 종료 시 소멸된다. genetration 카운트가 높은 것부터 없앤다. 높은게 gc가 수집활 확률이 높다. -왜? 숫자가 낮은 것은 방법 사용됐다는 것. 오래 사용하지 않은 것부터 없앤다. Stack: 프로그램 종료 시 소멸된다. 메소드가 호출되면 스택에 들어간다. thread가 만들어져 동작시킨다. Literal: 문자열, 상수가 저장되는 ..

Static, None Static, JVM, Stack Area

Static과 메모리의 관계? Q. 메인 클래스는 왜 객체 생성(new) 없이 실행될까 public class StaticTest { public static void main(String[] args) { main 이 있어야 시작 클래스이다. 클래스를 시작해주려면 객체 생성을 new를 해줘야하는데.. 메인은 왜 new 없이 실행이 가능할까? ->Static JVM은 실행할 파일을 찾는다 (실행하려면 메모리 위에 올라와있어야 한다.) Staitc이 붙은 멤버들은 정해진 static zone 위치에 한 번 자동으로 로딩된다. 스테틱은 프로그램 실행 시 메모리에 자동으로 할당/ 로딩돼 객체 생성 new없이 실행 가능 한 것이다. static 키워드가 붙었다면 Method zone 중 static zone으로..

배열, 클래스, 기본배열, 객체배열

배열과 클래스 : 둘 다 데이터를 담는 역할을 하지만 구조가 다르다. 배열은 동일한 데이터를 담는 동일한 구조이며, 클래스는 다른 데이터를 담는 이질적인 구조이다. 배열의 동일한 데이터? ex) 정수가 들어갈 공간을 연속적으로 만든다. int[] arr = new int[4]; //int만을 넣을 수 있는 공간 4개가 생성된다. 클래스의 이질적인 데이터? int, String, float 등을 혼합해 생성한다. ex) Student st - new Student(); //이런 것은 우리가 class를 사용해 직접 만들어야 한다. 기본배열: 기본 자료형이 들어감 ex) float[] arr = new float[3]; //실수 데이터 여러개 객체배열: 객체가 들어간다. ex) Student[] std = ..

생성자/ 메서드 오버로딩?

생성자? 클래스로 객체를 만들 때 한 번 호출되는 메소드 메소드? 객체가 가진 기능/ 객체가 하는 행위, 동작 기본 형태 : 접근제한자(=접근제어자) / 반환타입/ 메소드명(매개변수){ } 접근제어자 public : 프로젝트 전체에서 사용 가능 private : 가장 가까운 중괄호 안에서만 사용 Protected : 소규모 범위로만 (Default) : 특정 범위로만 클래스 구성요소: 필드 (= 멤버변수, 객체의 속성, 정보 역할을 담당하는 변수), 생성자, 메서드(=멤버변수) 자바에서 메서드는 클래스 안에서만 쓸 수 있다. 파이썬에서는 함수를 클래스 안(메서드)에서도 선언할 수 있고 클래스 밖(함수)에서도 선언할 수 있다. 자바는 클래스로 구성되어 있음 (클래스뿐..) 객체 == 클래스 클래스는 필드...

자바 기초: 변수? 객체? 클래스? 메서드?

변수? 데이터 저장 상자. 데이터가 바뀔 수도.. 아닐 수도.. (만드는 사람 마음 객체지향언어의 탄생 이유: 절차지향코드는 중간에 문제가 생기면 모든 코드를 뜯어봐야함. 객체지향언어는 객체단위로 설계, 해당 문제가 생긴 객체만 수정 가능 재사용 용이 객체? 주변에 있는 모든 것.. 컴퓨터, 연필, 책, 나 (사람), 시험, 수강신청 등등 프로그래밍에서의 객체는 속성과 기능을 가지는 프로그램 단위. ex) 나 라는 객체엔 이름, 나이 라는 멤버변수, 자기, 걷기, 읽기 등의 메서드가 있다. 멤버변수 = 상태변수 = 속성 기능 = 메서드 클래스? 객체를 찍어내기 위한 설계도, 툴 실제로 완성품이 있을 때 이렇게 작동합니다 ~류의 설명서 역할을 한다. 클래스의 구성요소 3가지 1. 부품 2. 조작/ 조립 방..

VO class, 메서드 오버로딩, toString()

객체지향프로그래밍에서 클래스란 객체를 설계하는 도구이다. 객체를 사용해 데이터 crud가 발생하는데 이를 잘못 설계하면 데이터 처리가 힘들어지기 때문에 클래스 설계를 잘 해야한다. 정보은닉이란 다른 객체에게 자신의 정보를 숨기고 자신의 동작, 기능, 연산만을 통해 접근을 허용하는 것. 클래스 외부에서 특정 정보에 접근을 막는다는 의미다. 숨겨져 있기 때문에 직접 참고가 불가하다. B가 은닉되어 있다면 B혼자 사용 가능하다 ex) private String title; 객체의 상태정보엔 주로 중요한 데이터가 들어간다. 외부에서 접근해 데이터를 넣을 수 있으므로 private 을 사용해 외부에서 정보를 바로 넣을 수 없게 정보은닉 시킨 것이다. private 을 사용하면 직접적인 접근이 불가능한데 정보를 어..

접근제어

접근제어 Access Modifier 객체는 상호간 접근을 제어할 수 있어야 한다. 왜? 객체의 행위정보는 상호작용을 해야하기 때문에 접근을 허용한다. 정보은닉: 객체의 상태정보는 중요하기 때문에 접근을 못하게 해야한다. ex) public int age; 나이라는 상태정보를 999 이렇게 저장해두면 곤란하다 하지만 public 상태이기 때문에 이런 일이 일어날 수 있다. 그래서 접근제한자를 설정해 아무나 바꾸지 못하게 설정해야 한다. 누군가 클래스를 써야 의미가 있기 때문에 클래스의 접근 제한자는 Public 으로 설정한다. 클래스 안 멤버들을 public, private 으로 설정한다. 상태정보 (나이,이름, 전화번호 등..) 는 보통 private 으로 설정하는 것이 기본이다. 메서드는 (play(..

메서드와 변수

Function == method == 방법 == 동작 Method는 객체가 가지고 이있는 동작이나 행위, 함수라도고 한다. 함수는 기능이다. 하지만 객체지향언어에 기능이라는 말은 어울리지 않는다 동작 method라는 말을 더 많이 쓴다 메서드란? 객체가 가지고 있는 동적 기능을 메서드(함수) 라고 한다. 반복적인 동일 작업에 메서드를 만들어 사용하면 편하다 객체가 가지고 있는 메서드를 통해 데이터를 주고 받으며 상호작용한다. 메서드는 크게 API에서 제공해주는 메서드와 사용자 정의 메서드 두 종류로 나뉜다 메서드는 정의하고 호풀 (call) 해서 사용한다. public int add(int x,int y){ int x = x+y; return z; } } a와 b를 더해서 돌려주는 메서드 add 메서드..

728x90
반응형