커리큘럼(12-30/변경)
01. Java (v)
02. git
03. Database
04. Jsp [Server]
05. 미니프로젝트 (3W)
06. HTML,CSS
07. JS
08. SpringFramework , SrpingBoot
09. React JS [Front-end]
10. 중간프로젝트 (1M)
11. Linux 명령어
12. AWS 클라우드
13. DevOps - Docker
14. App - Android
15. 최종프로젝트 (1M)
클래스 키워드
this
- 자기 자신 객체를 지정할 때 사용하는 키워드
this.
을 사용하면 동일 클래스 내의 멤버(멤버변수, 메서드)를 참조할 수 있음
this()
를 사용하면 생성자 내부에서 자신의 다른 생성자를 호출 가능
public class Person{
String name;
int age;
public Person(String name, int age){
this.name = name; // this.로 나의 멤버변수 접근 가능
this.age = age;
}
public Person(String name){
this(name,1); // this()로 나의 생성자의 접근 가능
}
public Person(){
this("이름없음",1);
}
public String getDetails(){
return "이름: "+name+"\t나이: "+age;
}
}
super
- 한단계 위 부모클래스의 객체를 지정할 떄 사용
super.
을 사용하면 부모클래스의 멤버를 참조할 수 있음
super()
는 생성자 내부에서만 사용이 가능하며, 부모클래스의 생성자를 호출하는데 사용
- 생성자의 첫 라인에는 반드시 this(), super()가 있어야 하는데 이를 기술하지 않으면 묵시적으로 super()가 삽입되어 부모클래스의 기본 생성자를 자동으로 호출
- 생성자 내부에서 또 다른 생성자를 호출할 떄는(this(),super()) 반드시 생성자 블록 내부의 첫 라인에 기술
public class Airplane{
void takeOff(){
System.out.println("비행기가 이륙합니다.");
}
void fly(){
System.out.println("일반 모드로 비행합니다.");
}
void land(){
System.out.println("비행기가 착륙합니다.");
}
}
public class SuperSonicAp extends Airplane{
int flyMode = 1;
void fly(){ // 자식 객체의 생성자
if(flyMode==1){
System.out.println("초음속 모드로 비행합니다.");
}
else[
super.fly(); // 부모 객체의 생성자 호출
]
}
}
접근제한자(Access Modifier)
- 클래스와 멤버변수, 메서드, 생성자의 접근을 제어할 수 있는 제한자
- 라이브러리 클래스를 설계할 때는 외부 클래스에서 접근할 수 있는 멤버와 접근할 수 없는 멤버로 구분해서 변수, 생성자,메서드를 설계하는것이 바람직
- 클래스에는 접근 제한자를 public과 default만 붙일 수 있음.
종류
- public : 같은 클래스, 같은 패키지, 다른 패키지를 막론하고 접근 가능
- protected : 같은 클래스, 같은 패키지는 접근이 가능, 다른 패키지에 속해있는 클래스인 경우 상속관계가 없으면 접근 불가능
- default : 같은 클래스, 같은 패키지에서만 접근 가능
- private : 같은 클래스 내부가 아니면 접근 불가능
OOP기술 - 은닉
정보은닉 - 캡슐화(Encapsulation)
- 은닉은 사용자에게 상세한 내부 구현을 숨기고 필요한 부분만 보이게 하는 것
- 은닉을 사용하기 위해서는 클래스의 멤버변수의 접근제한자를 private로 설정
- 은닉된 멤버변수에 접근하기 위해서는 public 메서드를 통해서 접근할 수 있는데,
변수의 값을 변경시키는데 사용되는 메서드
는 setter메서드*라고 부르며, 변수의 값을 얻어오는데 사용하는 메서드
를 getter메서드라고 부름
- 공개 메서드를 이용해 데이터를 변경시킬 경우 메서드 내에 데이터 유효성을 검증할 수 있는 루틴을 넣을 수 있음.
- 경우에 따라 권한을 체크할 수 있는 로직을 포함시키면 인가되지 않은 사용자에게 데이터나 로직을 숨길 수 있음
- 멤버변수 뿐만 아닌 메서드들도 private으로 선언 가능
getter
- 은닉 변수에 값을 저장하기 위한 메서드
- 접근 제어자를 public으로 선언하고 이름 (set+멤버변수명)으로 설정정
setter
- 은닉 변수에 값을 조회하기 위한 메서드
- 접근제어자 public으로 선언하고 이름 (get+멤버변수명) 으로 설정
public class MyDate{
private int year;
private int month
private int day;
public void setYear(int year){
this.year=year;
}
public int getYear(){
return year;
}
public void setMonth(int month){
this.month=month;
}
public int getMonth(){
return month;
}
public void setDay(int day){
this.day=day;
}
public int getDay(){
return day;
}
}