'프로그래밍'에 해당하는 글 63건

오버로딩과 오버라이딩, 이름이 비슷해서 간혹 헷갈릴 때가 있을 것이다. (없으면 말고...)

그래서 이참에 오버로딩과 오버라이딩이 무엇인지 정리해보기로 했다.

 

오버로딩 (Overloading)

오버로딩이란 먼저 사전에서 overloading을 찾아보면 과적하다라고 나온다. 즉, 적재적량을 초과하여 많이 싣는 것을 의미한다.

Java에서의 오버로딩은 하나의 메서드 이름으로 여러 기능을 구현하기 때문에 이런 이름이 붙여진 것 같다.

 

오버로딩의 조건

· 메서드 이름이 같아야 한다.

· 매개변수의 개수 또는 타입이 달라야 한다.

· 매개변수는 같고 리턴 타입이 다른 경우는 오버로딩이 아니다.

 

Java에서 오버로딩의 예

println 메서드를 보면 매개변수의 타입들이 다른 것을 볼 수 있다.

 

오버로딩의 장점

어떤 이유 때문에 오버로딩을 사용할까?

만약 위에서 예를 든 println과 같이 같은 기능인데 매개변수가 다를 경우 어떻게 해야할까? 오버로딩이 없다면 printlnWithString, printlnWithInteger와 같이 이름을 각각 다르게 지어줘야 한다. 그래서 오버로딩을 사용하면 메서드의 이름을 간결하고도 짧게 지어서 같은 기능이면 같은 이름으로 묶어서 사용하여 메서드 이름을 절약할 수 있고 어떤 기능을 하는지도 쉽게 알 수 있다.

 

 

오버라이딩 (Overriding)

오버라이딩이란 사전에서 overriding을 찾아보면 다른 무엇보다 더 중요한 또는 최우선시 되는 이란 뜻으로 나온다.

Java에서의 오버라이딩은 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 말한다. 즉, 상속받은 조상의 메서드와 같은 메서드이지만 내용을 변경하여 자신이 현재 사용하고 있는 내용을 최우선시 하기 때문에 오버라이딩이란 명칭이 붙여진 것 같다.

 

오버라이딩의 조건

· 조상 클래스의 메서드와 이름이 같아야 한다.

· 조상 클래스의 메서드와 매개변수가 같아야 한다.

· 조상 클래스의 메서드와 리턴 타입이 같아야 한다.

· 접근 제어자는 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.

· 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

· 인스턴스 메서드를 static 메서드로 또는 static 메서드를 인스턴스 메서드로 변경할 수 없다.

 

 

그렇다면 오버로딩과 오버라이딩의 내용을 한마디로 요약하면

· 오버로딩 : 기존에 없는 새로운 메서드를 정의하는 것.

· 오버라이딩 : 상속 받은 메서드의 내용을 변경하는 것.

 

 

 

 

'프로그래밍 > Java' 카테고리의 다른 글

다형성(polymorphsim)  (0) 2017.08.21
접근 제어자 (Access Modifier)  (0) 2017.08.19
JVM의 메모리 구조  (0) 2017.08.13
선언 위치에 따른 변수의 종류  (0) 2017.08.12
클래스와 객체와 인스턴스  (0) 2017.08.11

WRITTEN BY
김치치즈스마일
세계정복!

,

JVM은 용도에 따라 여러 영역으로 나누어 메모리를 관리한다.

과연 어떤식으로 관리하는지 알아보자.

 

 

메서드 영역 (Method Area = Class Area = Static Area)

· 프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일(*.class)을 읽어서 분석하여 클래스에 대한 정보를 이곳에 저장함. 이 때, 그 클래스의 클래스 변수도 이 영역에 함께 저장.

 

호출 스택 (Call Stack 또는 Execution Stack)

· 메서드의 작업에 필요한 메모리 공간을 제공.

· 메서드가 호출되면, 메서드 수행에 필요한 메모리 공간을 할당, 메서드가 종료되면 사용하던 메모리를 반환하고 스택에서 제거.

· 메서드가 작업을 수행하는 동안 지역 변수(매개 변수 포함)들과 중간 결과 등을 저장함.

· 호출 스택 맨 위에 있는 메서드가 현재 실행 중인 메서드.

 

힙 (Heap)

· 인스턴스가 생성되는 공간.

· new 연산자에 의해서 생성되는 배열과 객체는 모두 여기에 생성.

 

 

[참고] 자바의 정석

 

 

 

'프로그래밍 > Java' 카테고리의 다른 글

접근 제어자 (Access Modifier)  (0) 2017.08.19
오버로딩과 오버라이딩  (0) 2017.08.14
선언 위치에 따른 변수의 종류  (0) 2017.08.12
클래스와 객체와 인스턴스  (0) 2017.08.11
변수 타입에 따른 기본값  (0) 2017.08.05

WRITTEN BY
김치치즈스마일
세계정복!

,

변수는 멤버 변수(클래스 변수, 인스턴스 변수), 지역 변수로 나뉜다.

이렇게 변수의 종류를 결정하는 중요한 요소는 변수의 선언된 위치이다.

변수의 선언된 위치에 따라 종류를 알아보자.

 

 

 

변수의 종류 

선언 위치 

생성 시기 

 클래스 변수

(class variable)

클래스 영역 

클래스가 메모리에 올라갈 때 

 인스턴스 변수

(instance variable)

 인스턴스가 생성되었을 때

 지역 변수

(local variable)

 클래스 영역 이외의 영역

(메서드, 생성자, 초기화 블럭 내부)

 변수 선언문이 수행되었을 때

 

인스턴스 변수

· 클래스 영역에 선언되며, 클래스의 인스턴스를 생성할 때 만들어짐.

· 인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있음.

· 인스턴스마다 고유한 상태를 유지해야하는 경우 인스턴스 변수로 선언.

 

클래스 변수

· 선언 방법은 인스턴스 변수 앞에 static을 붙여주면 됨.

· 인스턴스를 생성하지 않고도 언제라도 바로 사용할 수 있음.

  ex) 클래스이름.클래스변수

· 클래스가 로딩될 때 생서오디어 프로그램이 종료될 때까지 유지.

· 모든 인스턴스가 공통된 저장공간(변수)을 공유함. 그래서 공유 변수(Shared variable)라고도 함.

· 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야할 경우 클래스 변수로 선언해야 함. 

 

지역 변수

· 메서드 내에 선언되어 메서드 내에서만 사용가능.

· 메서드가 종료되면 소멸 됨.

· for문, while문의 블럭({ }) 내에 선언된 지역 변수는 블럭 내에서만 사용 가능하며, 블럭을 벗어나면 소멸됨.

· 반드시 초기화 하고 사용.

 

 

[참고] 자바의 정석

'프로그래밍 > Java' 카테고리의 다른 글

오버로딩과 오버라이딩  (0) 2017.08.14
JVM의 메모리 구조  (0) 2017.08.13
클래스와 객체와 인스턴스  (0) 2017.08.11
변수 타입에 따른 기본값  (0) 2017.08.05
객체 지향 프로그래밍이란?  (0) 2017.06.04

WRITTEN BY
김치치즈스마일
세계정복!

,

클래스와 객체의 정의와 용도는 어떤 것일까?

 

클래스

· 정의 : 클래스란 객체를 정의해 놓은 것.

· 용도 : 클래스는 객체를 생성하는데 사용.

 

객체

· 정의 : 실제로 존재하는 것, 사물 또는 개념.

· 용도 : 객체가 가지고 있는 기능과 속성에 따라 다름.

 

프로그래밍에서의 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻함.

쉽게 설명하자면 클래스는 제품의 설계도이고 객체는 설계도를 사용해 만든 제품이라고 볼 수 있다.

 

인스턴스

· 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 함.

· 클래스로부터 객체를 만드는 과정을 인스턴스화 라고 함.

· 객체는 모든 인스턴스를 대표하는 포괄적인 의미.

· 인스턴스는 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미.

 

하지만 객체와 인스턴스는 같은 의미를 가지고 있으므로 엄격하게 구분할 필요는 없지만 문맥상의 차이는 있음.

 

[참고] 자바의 정석

'프로그래밍 > Java' 카테고리의 다른 글

오버로딩과 오버라이딩  (0) 2017.08.14
JVM의 메모리 구조  (0) 2017.08.13
선언 위치에 따른 변수의 종류  (0) 2017.08.12
변수 타입에 따른 기본값  (0) 2017.08.05
객체 지향 프로그래밍이란?  (0) 2017.06.04

WRITTEN BY
김치치즈스마일
세계정복!

,

요즘은 Android Studio를 통해서 CPU 값을 측정하기 좋지만 만약 Android Studio가 깔려있지 않은 경우,

adb를 이용하여 CPU 점유율을 측정하는 방법을 알아보도록 하자.

(노가다의 느낌이 있지만 혹시나 앱이 느리거나 죽는 경우가 발생했을 때 쓸 일이 생길지 모른다.)

 

지정한 폴더에 txt파일로 저장

adb shell top -s cpu -m 8 -d 1 > C:\Users\users\Documents\abbb\a_test5.txt

 

원하는 패키지 명만 기록

adb shell top -s cpu -d 1 | grep "패키지 명"

 

 

 

 

 


WRITTEN BY
김치치즈스마일
세계정복!

,

자바에서 변수를 선언할 경우 초기화를 해줘야 한다.

하지만 초기화를 하지 않더라도 변수의 타입별기본값이 있다.

과연 기본값은 어떤 것들이 있는지 알아보자.

 

자료형 

기본값 

boolean 

 false

 char

 '\u0000'

 byte

 0

 short

 0

 int

 0

 long

 0L

 float

 0.0f

 double

 0.0d or 0.0

 참조형 변수

 null

 

[참고] 자바의 정석

 

 

'프로그래밍 > Java' 카테고리의 다른 글

오버로딩과 오버라이딩  (0) 2017.08.14
JVM의 메모리 구조  (0) 2017.08.13
선언 위치에 따른 변수의 종류  (0) 2017.08.12
클래스와 객체와 인스턴스  (0) 2017.08.11
객체 지향 프로그래밍이란?  (0) 2017.06.04

WRITTEN BY
김치치즈스마일
세계정복!

,

인터넷 주소를 치다보면 끝에 .com 또는 .co.kr와 같이 끝나는 것을 볼 수 있다.

과연 이런 것들은 무슨 뜻일까???

 

· 기관의 성격 코드

- com : company의 약자, 영리를 목적으로 하는 업체

- net : network의 약자, 네트워크 관리 기구

- gov : government의 약자, 정부 기관

- org : organization의 약자, 비 영리 기관

- edu : education의 약자, 교육 기관

- mil : military의 약자, 군사 기관

 

· KrNIC(한국 인터넷 정보센터) 도메인 기관 코드

- co : company의 약자, 영리를 목적으로 하는 업체

- ac : academy의 약자, 교육 기관

- ne : network의 약자, 네트워크 관리 기관

- go : government의 약자, 정부 기관

- or : organization의 약자, 비 영리 기관

- re : research, 연구 기관

 

· 국가 코드

- kr : 한국

- jp : 일본

- uk : 영국

- de : 독일

- tw : 대만 

- ru : 러시아

- fr : 프랑스

- ca : 캐나다

 

 

'프로그래밍 > 네트워크' 카테고리의 다른 글

IP 주소란?  (0) 2017.07.06
URL이란?  (0) 2017.06.15

WRITTEN BY
김치치즈스마일
세계정복!

,

클랙스 선택자

· 직접 이름을 지정하여 속성을 지정하는데 사용

·  . 으로 시작

   ex) .classname {속성값;}

· 웹사이트에서 부분적인 효과를 담당

· 반복적으로 동일하게 사용되는 선택자

 

아이디 선택자

· 직접 이름을 지정하여 속성을 지정하는데 사용

· # 으로 시작

  ex) #idname {속성값;}

· 웹사이트의 레이아웃을 담당

· 웹 페이지에서 유일하고 한 번만 사용되는 선택자

 

예를 들어서 A라는 학교와 B라는 학교가 있다. 이때 A라는 학교와 B라는 학교를 아이디 선택자라고 생각하고 각 학교에 있는 반들을 클래스 선택자라고 생각하면 된다.

즉, A, B와 같이 학교의 이름은 유일하기 때문에 아이디 선택자로 보고 1반, 2반과 같이 반의 이름은 반복적으로 사용되기 때문에 클래스 선택자로 본다.

 

[참고] 처음부터 다시 배우는 HTML5&CSS3 :반응형 웹 표준 사이트 제작까지

'프로그래밍 > HTML & CSS' 카테고리의 다른 글

HTML이란?  (0) 2017.06.01

WRITTEN BY
김치치즈스마일
세계정복!

,

IP 주소란?

· Internet Protocol Address의 약자.

· 인터넷의 연결된 기기를 식별하는 유일한 번호.

· 전화기의 전화 번호에 해당하는 개념.

· 종류에는 IPv4와 IPv6가 있다.

 

IPv4

· Internet Protocol Address Version 4라는 의미.

· 0.0.0.0 ~255.255.255.255로 구성 (IPv4)

· 42억개의 경우의 수

· 하지만 인터넷의 연결된 기기를 전부 식별하기에는 부족 → IPv6의 등장

 

IPv6

· Internet Protocol Address Version 6라는 의미.

· 2의 128승 개의 경우의 수. (282366920938463463374607431768211456개)

· ex) 2001:0db8:85a3:08d3:1319:8a2e:0370:7334

 

 

'프로그래밍 > 네트워크' 카테고리의 다른 글

도메인  (0) 2017.07.31
URL이란?  (0) 2017.06.15

WRITTEN BY
김치치즈스마일
세계정복!

,

URL이란?

 

· Uniform Resource Locator의 약자.

· 어떤 기능을 사용하여 데이터에 액세스하면 좋을지 판단하는데 사용.

  그래서 URL은 특정 정보 자원의 종류와 위치가 기록되어 있다.

  흔히, 우리가 인터넷을 할 때 사용하는 http://로 시작하는 것은 액세스 대상이 웹서버여서

  HTTP라는 프로토콜을 사용하여 액세스한다는 것을 나타낸다.

  즉, URL의 맨 앞에 있는 문자열은 액세스할 때의 프로토콜의 종류가 쓰여있다고 생각하면 된다.

 

 

· URL의 형태

 

[참고] 성공과 실패를 결정하는 1%의 네트워크 원리

 

 

'프로그래밍 > 네트워크' 카테고리의 다른 글

도메인  (0) 2017.07.31
IP 주소란?  (0) 2017.07.06

WRITTEN BY
김치치즈스마일
세계정복!

,