객체지향 언어 : 객체를 선언한 후, 그 객체에 관한 내용(관계)을 프로그래밍함 => 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)으로 핸들링 가능
[내일배움카드], [국비지원교육]
'Java&SpringBoot' 카테고리의 다른 글
sts 스프링 설치 오류 (0) | 2023.02.18 |
---|---|
4주차) 패스트캠퍼스 Java & Springboot 로 시작하는 웹 프로그래밍 (0) | 2023.02.15 |
2주차) 패스트캠퍼스 Java & Springboot 로 시작하는 웹 프로그래밍 (0) | 2023.01.31 |
1주차) 패스트캠퍼스 Java & Springboot 로 시작하는 웹 프로그래밍 (0) | 2023.01.25 |
Prologue) 패스트캠퍼스 Java&spring 웹 개발 종합반 (0) | 2023.01.20 |