Java&SpringBoot

3주차) 패스트캠퍼스 Java & Springboot 로 시작하는 웹 프로그래밍

은line 2023. 2. 8. 10:54

객체지향 언어 : 객체를 선언한 후, 그 객체에 관한 내용(관계)을 프로그래밍함 => C++, C#, Python, JS, Java

 

Obj 객체란? 구체적, 추상적인 데이터 단위 

객체를 정의하고, 객체가 제공하는 기능을 구현, 그 기능들 간 메시지(파라미터/객체) 전달을 통해 객체간의 관계(협력), 속성을 구현

> 객체를 정의 (class ObjName)

> 객체의 속성을 멤버변수로, 역할을 메서드로 구현

> 객체간의 협력을 구현

ex)

public class UserInfo {

// 멤버변수

String id;

String password;

String name;

String address;

int phone;

}

Funtion 함수란?

스택메모리 : 함수가 호출될때 지역변수들이 사용하는 메모리

하나의 기능을 수행하는 코드로 호출 여러곳에서 가능, 호출하지 않으면 사용되지 않음, 호출시 return하여 반환해줌

ex) 반환타입 함수명 (매개변수) { 코드 }

return 값 없는 함수 = void 타입

return 타입 = 함수 타입

 

return 값을 출력하려면  main함수에서 변수에 담아서 출력가능

변수에 담아주지 않으면 void형인 sayHello 함수 실행결과만 출력된다.

 

지역변수 = res, num1, num2, sum, i

 

 

 

 ※ 메서드와 차이점 

> 함수 : 단독으로 존재

> 메서드 : 객체의 기능으로 클래스 안에 속함, 클래스 안의 멤버변수를 사용하며, 멤버 함수라고도 한다.

 

객체의 속성 = 멤버변수

객체의 기능 = 메서드

 

 

클래스 활용

class 객체A {
    멤버변수, 메서드 선언;  }

class 객체B {
   main 함수 {
      객체A  참조변수 = new 객체A() ; // 인스턴스 생성  
      참조변수.멤버변수 = 값; ...    }
 }

getter 메서드:  변수값을 얻는 메서드

setter 메서드: 변수값을 재설정 하는 메서드

 

객체 A를 B에서 사용할때

> new 키워드를 사용하여 인스턴스를 생성 

> 참조변수(타입 = 객체A) 를 이용하여 멤버변수 or 메서드에 접근, 값 변경 가능함

 

ex)

학생 정보를 출력하는 객체를 생성 (=객체A)                        ->           학생을 만들어줌 (=객체B)

 

인스턴스란?

> new키워드를 통해  클래스를 메모리에 생성한 상태

> 실제 클래스 기반으로 생성된 인스턴스 객체는 각각 다른 멤버변수 값을 가짐

 

힙메모리 (동적메모리)

변수를 사용할때 메모리 할당(new 키워드)  > 사용하지 않으면 할당해제됨

> 메모리 주소 : 참조변수가 가르킴  =>  println(참조변수) // 메모리 주소 출력

> 참조 값: 생성된 인스턴스의 메모리 주소 값

 

생성자란?

> 클래스 이름과 동일, 반환값 없음

> 객체를 생성하기 위해 new키워드 뒤에 오는 것 => 위 코드에서는 StudentInfo 임

> 접근 제어자를 통해 외부에서 접근하지 못하도록 가능

> 클래스에 생성자가 하나도 없는 경우에만 디폴트 생성자가 생김

** 생성자를 생성하고 멤버변수 값을 설정하지 않으면 null, 0으로 할당됨 == 디폴트 생성자

 

ex) 디폴트 생성자 

ex) 클래스에 이미 생성자 존재시

#오류

# 디폴트 생성자 추가

 

생성자 여러개 정의 = 오버로딩

 

 Overriding 

> 상의 클래스에 정의된 메서드내용을 하위 클래스에서 동일한 이름의 메서드로 재정의 하는 것

 

메서드의 이름은 주소값을 나타냄

메서드 내의 변수는 스택 메모리에 위치, 다른 인스턴스라도 같은 메서드 호출

ex)

 다형성 

> 하나의 코드가 여러 자료형으로 구현되어 실행되는 것으로 같은 코드에서 여러 실행결과  출력

> 유연, 확장성있는 프로그램 제작 가능

> 여러 클래스의 하나의 상위 클래스 타입(Animal)으로 핸들링 가능

[내일배움카드], [국비지원교육]