본문 바로가기
JAVA 수업/java 수업 기록

0523 수업내용

by 예림220 2023. 5. 23.

객체지향프로그램의 목적: 클래스의 재사용성을 높이자, 안정성을 높이

 

메서드 오버로드: 메서드명이 같고 매개변수(개수| 타입| 순서)다름 

(목적: 사용자 입장에서 클래스가 갖고 있는 메서드를 재사용하기 편하게 하려고 사용한다)

메서드 이름이 같고 (같은클래스 내에 있는!!) 다른 건 다다른 것이 '메서드 오버로드'

* 다른클래스 x  

 

 ex)(메서드 오버로드 안한 경우)

printlnString()

printllnBoolean()

pirntInchar()

 

ex)

println(String)

println(Boolean)

println(char)

 

생성자: 객체생성시 자동호출되는 특수메서드

          : 생성자명은 클래스명과 같고 반환형은 없음 

         : 생성자가 없으면 기본생성자가 자동 만들어짐 

(예시) class Employee {

}                                      //생성자 x > (컴파일시에)기본생성자가 만들어짐 

 

class Employee {

}

new Employee() //기본생성자 호출이 이루어짐 

          : public class의 기본생성자는 public으로 

          : default의 기본생성자는 default로 만들어짐 

 

(제공자 코드) 

class Employee {

String no;

String name;

int salary; 

}

(사용자쪽 소스코드) 

Employee e = new Employee();

e.no="1"; 

e.name = "오문정";

e.salary = 10;

 

(생성자를 활용한 제공자 코드) 

class Employee {

String no;

String name;

int salary; 

Employee(String n, String nm, int s){ //생성자호출

     no=n, name=nm, salary=s; 

(사용자쪽 소스코드) 

}

Employee e = new Employee("1", "오문정", 10); 

 

(제공자 코드)

class Employee {

String no;

String name;

int salary; 

Employee(){ //생성자호출 // 매개변수 없는 생성자를 넣는 이유는 매개변수 있거나 없는 변수를 사용하려고, 이게 없으면

사용자쪽소스에 Employee e = new Employee(); 사용못함 . 하는일이 없어도 매개변수 없는 생성자를 습관처럼 만들기 (소스코드의 확장성이 좋아짐) 

}

Employee(String n, String nm, int s){ //생성자호출

     no=n, name=nm, salary=s; 

}

(사용자쪽 소스코드) 

Employee e = new Employee();

e.no="1"; 

e.name = "오문정";

e.salary = 10;

 

[this 예약어]

매개변수와 멤버변수 이름이 같아 그 둘을 구분하기 위해 사용 

this. - 현재 사용중인 객체의 ~ 

 

[this() 생성자 호출]

this() - 현재 사용중인 객체의 또다른 생성자를호출해라

생성자에 첫줄에 와야한다. 

 

[static변수]

객체들 사이에 공유되어야 할 정보.

메서드 영역에 탑재가 되며, 메인 메서드가 호출되기 전에 자동 초기화가 되며, 객체들과는 무관한 변수이다. 

메모리의 효율성이 떨어진다. (static 변수가 필요할 때 외에는 사용하지 말기. static 변수 사용 지양하기)

(객체단위로 관리되어야 할 정보는 static으로 만들면 안된다.) 

선언 위치: 멤버변수 앞, 메서드 앞

 

class A {

int i; //non-static 변수 | instance 변수 (객체지향프로그램에서는 인스턴스와 객체라는 용어를 같이 봄)

static int si; //static변수 | class 변수 (static 변수는 메서드 영역에 기억된다, static변수는 객체와 무관한 변수이다)

 

 

 

 

java.base (자바 SE 11 및 JDK 11) (oracle.com)

 

 

java.base (Java SE 11 & JDK 11 )

Contains the collections framework, some internationalization support classes, a service loader, properties, random number generation, string parsing and scanning classes, base64 encoding and decoding, a bit array, and several miscellaneous utility classes

docs.oracle.com

 

[final]

'끝이다' , abstract과 반대개념 

- 위치: 클래스 앞 , 메서드 앞, 멤버변수 앞, 지역변수 앞

ex) final class =  class 가 끝이다. 

final 멤버변수 = 변수값을 변경 못한다. 

 

[패키지]

 

 

[접근제어자]

public : 누구든 접근할 수 있음 

protected (상속 공부 안했으니까 우선 넘어감)

package (default) : 자기 패키지에서만 접근 가능 

private : 자기 클래스에서만 접근 가능 

 

멤버변수 중에 상수는 주로 public 으로 

일반 멤버변수는 private으로 하는 것이 일반적인 관례이다. 

멤버변수: 상수 - public, 변수 - private 

정보은닉용도 

 

은닉된 정보를 사용자가 사용할 수 있도록 통로를 만들어 주는 것이 '캡슐화'이다 

 

[객체생성법]

3가지 

 

 

(1) new 키워드 이용

(2) 싱글톤패턴( 미리 객체를 만들어두고, 만들어진 객체를 사용하도록 하는 것)  - 오늘 실습한 거 SingletonTest

(3) 객체 복제 (2가지로 나뉨 - 얕은복사, 깊은복사)

 

[자바빈] 

자바빈=컴포넌트 

재사용 가능하고 독립적으로 동작할 수 있는 단위 모듈

자바빈의 조건

1) public class

2) public 매개변수없는 생성자 

3) 프로퍼티(property 속성)용 멤버변수는 public이면 안됨 (객체의 속성: property)

4) 프로퍼티용 public setter 메서드 / getter 메서드 필요  

'JAVA 수업 > java 수업 기록' 카테고리의 다른 글

0526 수업 내용  (2) 2023.05.26
0524 수업 내용  (2) 2023.05.24
0522 수업 내용  (2) 2023.05.22
[자바의 정석] Arrays  (0) 2023.05.21
[자바의 정석] Array로 배열 다루기  (0) 2023.05.21