객체지향프로그램의 목적: 클래스의 재사용성을 높이자, 안정성을 높이
메서드 오버로드: 메서드명이 같고 매개변수(개수| 타입| 순서)다름
(목적: 사용자 입장에서 클래스가 갖고 있는 메서드를 재사용하기 편하게 하려고 사용한다)
메서드 이름이 같고 (같은클래스 내에 있는!!) 다른 건 다다른 것이 '메서드 오버로드'
* 다른클래스 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)
[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 |