출처: https://www.edwith.org/boostcourse-android/lecture/17089/



1. HTTP (Hypertext Transfer Protocol, 하이퍼텍스트 전송 규약)

HTTP는 Web-Client와 Web-Server 사이에서 데이터를 교환하는 프로토콜이다.

웹브라우저와 같은 클라이언트는 웹 서버에 연결을 만든 후 요청(Request)을 보내고, 

서버는 요청에 대한 응답(Response)을 전송 후 화면에 보여주게 된다.

이 때 데이터에 대한 요청과 응답을, 소켓 위에서 HTTP라는 국제 표준에 맞는 포맷으로 주고받게 된다.

HTTP는 헤더와 바디로 구분되고, 기본적인 사용 포트 번호는 80이다.




2. Request form

요청 정보를 포함하고 있다.

- Request Line

 > 클라이언트의 요청방식(Method, 일반적으로 GET을 사용해 리소스를 가져오거나 POST를 사용하여 데이터를 전송)

 > 요청 패스(Path) 

 > HTTP 버전

- Request Headers

 > 헤더에 들어가 있는 각각의 줄은 하나의 속성을 나타내고 속성이름, 콜론(:), 속성값으로 구성된다.




3. Response form

응답 정보인 데이터를 포함하고 있다.

- Status Line: HTTP 버전과 응답 코드, 응답 메시지 등으로 구성된다.

- Response Headers: 요청 헤더와 비슷하다.




4. 참고 링크

HTTP 개요: https://developer.mozilla.org/ko/docs/Web/HTTP/Overview



'Android' 카테고리의 다른 글

Volley 사용하기 - (1)  (0) 2018.07.31
HTTP - 2. 웹으로 요청하기  (0) 2018.07.30
소켓 (Socket) - 3. 소켓 사용하기 (2)  (0) 2018.07.28
소켓 (Socket) - 2. 소켓 사용하기 (1)  (0) 2018.07.25
소켓 (Socket) - 1. 소켓이란  (0) 2018.07.25

참고 출처: https://opentutorials.org/course/1223/6088



1. 오버로딩이란

메서드 이름은 같지만 서로 다른 매개 변수 형식을 가지는 여러 개의 메서드를 정의할 수 있는 방법을 말한다.

자바는 메서드의 이름이 같다 하더라도 매개변수의 숫나나 데이터 타입이 다르다면 다른 메서드로 인식한다.

println() 메서드를 예로 들 수 있다.



2. 장점

계산기에서 1+2 를 계산하는 메서드가 있다. 

그러나 1+2+3 을 계산하고 싶다면 입력 인자를 3개를 가지는 메서드를 만들어야 할것이다.

오버로딩을 하지 않는다면, 매개변수의 수에 따라 메서드 이름이 달라져야 하며 이를 신경써서 구현하고 사용해야 하지만

오버로딩을 사용하면 이런 문제를 해결할 수 있다.



3. 조건

매개변수는 다르지만 리턴타입은 같아야 한다.

리턴값이 다르다면, 리턴값이 없는 메서드를 호출한 것인지 리턴값이 int형인 메서드를 호출한 것인지 알 수 없기 때문이다.



4. 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class Calculator{
    int left, right;
    int third = 0;
      
    public void setOprands(int left, int right){
        System.out.println("setOprands(int left, int right)");
        this.left = left;
        this.right = right;
    }
     
    public void setOprands(int left, int right, int third){
        System.out.println("setOprands(int left, int right, int third)");
        this.left = left;
        this.right = right;
        this.third = third;
    }
     
    public void sum(){
        System.out.println(this.left+this.right+this.third);
    }
      
    public void avg(){
        System.out.println((this.left+this.right+this.third)/3);
    }
}
  
 
public class CalculatorDemo {
    public static void main(String[] args) {
          
        Calculator c1 = new Calculator();
        c1.setOprands(1020);
        c1.sum();       
        c1.avg();
        c1.setOprands(102030);
        c1.sum();       
        c1.avg(); 
    }
}
 
// 실행 결과
// setOprands(int left, int right)
// 30
// 15
// setOprands(int left, int right, int third)
// 60
// 30
cs



5. 사전적 의미

"overloading(과부하)"의 의미와 "loading(짐싯기)"을 통해 오버로딩은 같은 이름의 메서드에 다른 매개변수를 여러개 싣는다라는 뜻으로 볼 수 있다.



'Java' 카테고리의 다른 글

static과 final  (0) 2018.08.20
직렬화 (Serialization)  (0) 2018.08.04
Overriding (오버라이딩, 재정의)  (0) 2018.07.28
String, StringBuffer, StringBuilder  (0) 2018.07.17
Scanner와 BufferedReader  (0) 2018.07.17

참고 출처: https://opentutorials.org/course/1223/6090



1. 오버라이딩이란

오버라이딩은 부모 클래스 기능을 자식 클래스에게 물려주는 기능인 상속과 연관이 깊다.

오버라이딩이란, 부모 클래스의 메서드를 물려 받긴 했지만 부모가 갖고 있는 메서드를 쓰지 않고

자식 클래스의 필요에 따라 그 메서드를 다시 정의해서 기능을 변경하는 것을 말한다.


2. 재정의

자식 클래스 입장에서 부모 클래스는 기본적인 동작 방법을 정의한 것이라면, 

자식 클래스에서 메소드를 재정의하는 것은 부모 클래스로부터 물려 받은 기본 동작 방법을 변경하는 것이라 할 수 있다. 

예를 들어 계산기라는 클래스가 sum() 이라는 1+2를 해주는 메서드라 할 때 

sum() 메서드를 오버라이딩을 하여 1+2를 더하고 출력까지 해주는 메서드로 변경해 줄 수 있다. 



3. 조건

오버라이딩을 하기 위한 메서드 정의는 

메서드의 이름, 매개변수의 숫자와 데이터 타입과 순서, 리턴타입이 모두 부모클래스의 메서드의 정의와 같아야 한다.



4. 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// 부모 메서드
class Calculator {
    int left, right;
 
    public void setOprands(int left, int right) {
        this.left = left;
        this.right = right;
    }
 
    public void sum() {
        System.out.println(this.left + this.right);
    }
 
    public int avg() {
        return ((this.left + this.right) / 2);
    }
}
 
 
// 자식 메서드
class SubstractionableCalculator extends Calculator {
     
    // Overriding
    public void sum() {
        System.out.println("실행 결과는 " +(this.left + this.right)+"입니다.");
    }
     
    // Overriding
    public int avg() {
        // 상위 클래스의 메서드 호출
        return super.avg();
    }
     
    public void substract() {
        System.out.println(this.left - this.right);
    }
}
 
 
public class CalculatorDemo {
    public static void main(String[] args) {
        SubstractionableCalculator c1 = new SubstractionableCalculator();
        c1.setOprands(1020);
        c1.sum();
        System.out.println("실행 결과는 " + c1.avg());
        c1.substract();
    }
}
 
// 실행 결과는 30입니다.
// 실행 결과는 15
// -10
cs


유의할 점은, 위의 실행결과는 c1.sum이 부모 클래스의 메소드가 아니라 자식 클래스의 메소드 sum을 실행하고 있다.

오버라이딩한 메서드 호출 시, 부모 클래스가 갖고 있는 메서드는 무시가 되고 자식 클래스의 메서드가 실행된다.



5. 사전적 의미

즉, Overriding이란 "riding(올라탄다)"의 의미로 부모 클래스의 메소드의 동작방법을 변경하며,

"overriding(최우선의)"의 의미로 부모 클래스와 자식 클래스의 메서드 명칭이 같을 시에는 우선순위가 자식 클래스에 있다는 뜻으로 이해할 수 있겠다.


'Java' 카테고리의 다른 글

직렬화 (Serialization)  (0) 2018.08.04
Overloading (오버로딩)  (0) 2018.07.28
String, StringBuffer, StringBuilder  (0) 2018.07.17
Scanner와 BufferedReader  (0) 2018.07.17
객체(Object), 클래스(Class), 인스턴스(Instance)  (0) 2018.07.16

+ Recent posts