일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- sqld 옵티마이져
- java spider
- JAVA 연산자
- java Animal
- SQLD 옵티마이저
- sqld grant
- PLSQL
- Java Cat
- sqld remame
- sqld trigger
- SQLD 자격시험 개념정리
- SQLD 특강
- java 구구단
- java 상속
- java 로또
- java Fish
- sqld revoke
- Java 메소드
- SQLD 핵심포인트
- java 성별
- java 논리연산자
- java string
- java
- SQL
- java 단축키
- sqld 자격증
- JAVA 제어문
- sqld deny
- java 함수
- JAVA for문
- Today
- Total
SQLD, ECLIPS, JAVA,PYTHON, NODE....
[Eclips] Java class 5 - package, import, getters & setters 함수, 생성자 함수. 본문
[Eclips] Java class 5 - package, import, getters & setters 함수, 생성자 함수.
D_Aiden 2023. 12. 13. 12:572023.12.13
## 클래스: 객체의 틀(붕어빵기계)이다.
- 맴버변수와 맴버메소드만 가질 수 있음.(총 2가지)
- 맴버변수는 데이터 저장
맴버메소드는 기능구현
- 지역변수(=로컬변수, =글로벌변수)이며, 메소드 내에서 선언되는 변수.
- 객체화(=인스턴스화)를 만들기 위한 틀이며, 연산자는 new를 사용.
ex) 붕어빵/붕어빵틀
- 무조건 main에 넣는다.
## Package
- 비슷한 목적으로 생성된 클래스 파일들을 모아둔 폴더.
## Package 호출방식
- 반드시 첫줄에 들어가고
- 소문자 코딩이며,
- import보다 위에 있어야 되고
- 하위 패키지는 package oop.패키지명.패키지명.. ; 형태임 // 하위는 .(점)으로 구분.
## Sttter & Getter 함수
- 공용(static) 변수가 아니라면 → private 추가 → 현재 클래스에서만 접근할 수 있음
※ private 를 선언하는 순간 위의 방식으로는 타 클래스에서 변수 불러오기 불가능 → Setter&getter 함수 사용
(연습)Student class에 객체를 선언
StudentTest class에 변수를 선언
형태: set 변수명(파라미터 변수) {
return 파라미터변수;
}
getter 변수명() {
return 파라미터변수;
}
ex) void setName(String ssname) {
this.name = ssname; // this는 클래스명(클래스변수)임.
(해석) student 클래스(ssname)에 존재하는 name변수를 불러오는 명령을 사용할때 this. 입력
맴버변수에 접근/초기화 하기 위함.
@ 쉽게 setter/getter함수 만드는 방법
(경로) 우측 마우스 > source > generate setter & getter 클릭하면 자동생성 됨.
package oop.basic;
public class Student {
// 객체생성
private String hakbun, name; //private를 입력하면, 특정변수만 접근.
private int kor, eng, mat; //private를 입력하면, 특정변수만 접근.
private int total; //private를 입력하면, 특정변수만 접근.
private double avg; //private를 입력하면, 특정변수만 접근.
//setter&getter함수는 우측마우스 클릭>source > Generate Setter&Getter 클릭 자동생성.
public String getHakbun() {
return hakbun;
}
public void setHakbun(String hakbun) {
this.hakbun = hakbun;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMat() {
return mat;
}
public void setMat(int mat) {
this.mat = mat;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public double getAvg() {
return avg;
}
public void setAvg(double avg) {
this.avg = avg;
}
public void sum() {
total =kor +eng + mat;
}
public void avg() {
avg=total/3.0;
}
public void setStudent(String hakbun, String name, int kor, int eng, int mat) {
this.hakbun=hakbun; //this는 현재클래스 파라미터를 직접 지칭
this.name=name; //this는 현재클래스 파라미터를 직접 지칭
this.kor=kor; //this는 현재클래스 파라미터를 직접 지칭
this.eng=eng; //this는 현재클래스 파라미터를 직접 지칭
this.mat=mat; //this는 현재클래스 파라미터를 직접 지칭
}
// 출력하는 메소드(직접 지정)
public void output() {
System.out.println(hakbun+"의 총점"+", 평균"+avg);
}
}
public void sum() {
total =kor +eng + mat;
}
public void avg() {
avg=total/3.0;
}
// 출력하는 메소드
public void output() {
System.out.println(hakbun+"의 총점"+"," 평균 +avg);
}
}
package oop.basic;
public class StudentTest {
public static void main(String[] args) {
// Main 영역에서 변수 사용하기 [StudentTest class] (Getter&Setter는 객체변수)
// 객체별로 데이터입력 방식(비추천 함)
Student s1 = new Student();
s1.hakbun="98333021"; //Student클래스에서 private를 선언하면 호출 못함
s1.name = "aiden"; //Student클래스에서 private를 선언하면 호출 못함
s1.kor = 90; //Student클래스에서 private를 선언하면 호출 못함
s1.eng = 100; //Student클래스에서 private를 선언하면 호출 못함
s1.mat = 95; //Student클래스에서 private를 선언하면 호출 못함
s1.setHakbun("200411211"); //직접입력할 수 있으나, Data가 많으면 비추천
s1.setName("aiden"); //직접입력할 수 있으나, Data가 많으면 비추천
s1.setKor(90); //직접입력할 수 있으나, Data가 많으면 비추천
s1.setEng(80); //직접입력할 수 있으나, Data가 많으면 비추천
s1.sum(); //직접입력할 수 있으나, Data가 많으면 비추천
s1.avg(); //직접입력할 수 있으나, Data가 많으면 비추천
s1.output(); //직접입력할 수 있으나, Data가 많으면 비추천
// 간편하게 호출하는 방식(setter&getter 함수를 호출하는 형태)
s1.setStudent("2000222", "Aiden", 90, 80, 70);
System.out.println("이름: "+s1.getName());
s1.sum();
s1.avg();
s1.output();
Student s2 = new Student();
s2.hakbun="30045124"; //Student클래스에서 private를 선언하면 호출 못함
s2.name = "홍동우"; //Student클래스에서 private를 선언하면 호출 못함
s2.kor = 80; //Student클래스에서 private를 선언하면 호출 못함
s2.eng = 90; //Student클래스에서 private를 선언하면 호출 못함
s2.mat = 70; //Student클래스에서 private를 선언하면 호출 못함
s2.sum(); //Student클래스에서 private를 선언하면 호출 못함
s2.avg(); //Student클래스에서 private를 선언하면 호출 못함
s2.output(); //Student클래스에서 private를 선언하면 호출 못함
// 간편하게 호출하는 방식(setter&getter 함수를 호출하는 형태)
Student s3 = new Student();
s3.setStudent("20231213", "AAiden",80, 90, 100); //setter 함수로 변수를 한번에 호출
System.out.println("이름: "+s3.getName());
s3.sum();
s3.avg();
s3.output();
}
}
(결과)
200411211의 총점, 평균88.33333333333333
이름: Aiden
30045124의 총점, 평균80.0
이름: AAiden
20231213의 총점, 평균90.0
## 생성자(constructor) 함수 오버로딩(overloading)
--> 생성자 메소드라고 안하고 함수라고 함.
--> output은 출력, set은 초기화(값을 넣을때), get은 갖고올때(값을 갖고올때)
1) 객체생성이 목적 (new사용) ==> 생성자함수 오버로딩 가능
형태: new 사용(클래스명과 동일해야 되고, 첫글자 대문자)
2) 기본생성자 함수는 기본값 존재
ex.getInstance(Calendar) // new가 숨겨져 있음(기본생성자 함수). 달력호출
3) 객체는 class단위. new 할때 class를 쓴다.
4) 리턴(return)타입이 없다.
(설명)
생성자 함수로 간략하게 호출(객체생성과 함께 값초기화도 간략하게/편리하게 할 수 있음)
## 인스턴스 복사
- 생성자의 입력값에 기존에 호출한 생성자에 대한 변수 값을 복사해서 해당 값을 데이터로 가짐
- c2의 데이터 → 복사 → 같은 값을 가진 신규 객체가 생성된것
- c2 객체 ≠ c3 객체
package oop.basic;
public class Car {
private String color;
private String gearType;
private int door;
Car(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
Car(Car c) { //생성된 생성자 함수의 입력 값을 받아오는 생성자 함수 -> 데이터타입 = Car
this.color = c.color;
this.gearType = c.gearType;
this.door = c.door;
}
}
package oop.basic;
public class CarTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Car c2 = new Car("red", "stick", 2);
System.out.println("C2의 정보 : "+c2.getColor()+", "+c2.getGearType()+", "+c2.getDoor());
Car c3 = new Car(c2); //c2 데이터 값 받아오기 -> 복사 -> 복사된 c2값 c3 변수에 입력
System.out.println("C3의 정보 : "+c3.getColor()+", "+c3.getGearType()+", "+c3.getDoor());
}
}
//Console
C2의 정보 : red, stick, 2
C3의 정보 : red, stick, 2
//c3 color 변수에 신규 데이터 값 입력
Car c3 = new Car(c2);
c3.setColor("blue"); //입력
System.out.println("C3의 정보 : "+c3.getColor()+", "+c3.getGearType()+", "+c3.getDoor());
//Console
C2의 정보 : red, stick, 2
C3의 정보 : blue, stick, 2 //C2의 컬러 데이터값 != C3의 컬러 데이터값
'Java' 카테고리의 다른 글
[Eclips] Java Class 7 - toString, 추상클래스(abstract), 인터페이스(interface) (0) | 2023.12.15 |
---|---|
[Eclips] Java Class 6 - 상속구조, final, tostring (0) | 2023.12.14 |
[Eclips] Java Class 5 - 매개변수, 오버로딩, 메소드 문제 및 정답 (0) | 2023.12.13 |
[Eclips] Java class 4 - 선언부, Method, signature, Overloading, windowbuilder 설치. (0) | 2023.12.12 |
[Eclips] Java class 3 - 배열, 2차원 배열, (0) | 2023.12.11 |