Class Constructor
- 모든 클래스는 반드시 하나 이상의 contructor을 가짐
- 사용자가 클래스 선언시 구성자를 선언하지 않은 경우 자바 컴파일러가 디폴트 구성자를 만듦
- 초기에 멤버 변수를 초기화
- 모든 변수를 초기화하지 않은 경우, 초기화되지 않은 값은 디폴트 값으로 자동 설정
this
- 모든 객체는 자기 자신을 참조할 때 this 키워드를 사용
2. constructor, set, get example
public class StuentData {
private String StudentName;
private int StudentID;
private int StudentAge;
// constructor1 - 변수 초기화
public StudentData(){
StudentName = "None";
StudentID = 0000;
StudentAge = 0;
}
// constructor2 - this: 현재 클래스 맴버 변수를 의미함
public StudentData(String StudentName, int StudentID, int StudentAge){
this.SetStudentName(StudentName);
// this.StudentName = StudentName;
this.SetStudentAge(StudentAge);
// this.StudentAge = StudentAge;
this.StudentID = StudentID;
}
// set function1
public void SetStudentName(String StudentName) {
this.StudentName = StudentName;
}
// get function1
public String GetStudentName(){
return this.StudentName;
}
// set function2
public void SetStudentAge(int StudentAge){
if (StudentAge > 0 ) {
this.StudentAge = StudentAge;
}
else {
System.out.println("Error, you cannot assign negative value");
}
}
//get function2
public int GetStudentAge(){
return this.StudentAge;
}
}
toSting() method
- 객체 인스턴스를 출력하려고 하면 문자 그대로 출력되지 않기 때문에 toString 메소드를 만들어 원하는 형태로 출력될 수 있게 함
- 이름이 반드시 toString() 메소드여야 함
...
public String toString(){
String info = "";
info = info + this.ClassMember + " \n" + this.ClassMemeber + " \n" + ...
return info;
}
- constructor 에서 바로 값을 넣어 초기화하는 것보다 setter 함수를 이용해서 초기화하는 것이 좋은 방법
3. Class Composition
- has(one object)-a relationship(multiple classes)
- 여러 개의 클래스를 하나의 프로그램에 사용하는 것
- 클래스 객체를 다른 클래스의 멤버로 선언
Example
// ** ctrl + Shift + f : 코드 라인 정리
public class Engine{
private int capacity;
private int serialNumber;
}
public getCapacity() {
return capacity;
}
public void setCapacity(int capacity){
this.capacity = capacity;
}
public int getSerialNumber(){
return serialNumber;
}
public void setSerialNumber(int serialNumber){
this.serialNumber = serialNumber;
}
public class Car {
private String maker;
private int year;
private Engine carEngine;
public Car(String maker, int year, int capacity, int serialNumber){
super();
this.maker = maker;
this.year = year;
this.carEngine = new Engine(capacity, serialNumber);
}
// 상단 메뉴 -> source -> getter, setter 자동 생성 ...
}
public class TestCar{
public static void main(String[] args){
Car ray = new Car("KIA", 2020, 2000, 12312314);
System.out.println(ray.getMaker());
System.out.println(ray.getYear());
System.out.println(ray.getCarEngine()); // 객체이므로 toString() 메소드 필요
}
}
4. Class static members
- static 메소드는 non-static 클래스 멤버에 접근할 수 없음
- static 메소드는 클래스의 객체가 인스턴스화된 것이 없을 때에도 호출할 수 있음
- static 변수는 static 메소드와 non-static 메소드 모두 접근 가능
- non-static 변수는 static 메소드에서 접근 불가능
public class Student(){
private String name;
private int id;
private static Sring college = ""; // this 키워드로 접근 불가
public static void setCollege(String College){
college = College;
// static value는 static 메소드에서만 접근 가능, this 키워드 사용 불가
this.id = 1234; // 불가능 - id 는 no-static이기 때문
}
..
}
public class TestStudent(){
public static void main(String[] args) {
Student std1 = new Student("se", 1234);
std.setCollege("Computing");
Student std2 = new Student("ke", 2354);
std.setCollege("English");
System.out.println(std1.getCollege); // English
}
}
- 클래스마다 college(static 변수) 값을 설정할 수 있는게 아니라 전체 클래스에 적용됨
5. Importing static variables and methods from other class.
import static java.lang.Math.*;
public class StaticImportTest{
public static void main(String[] args){
System.out.println(sqrt(900.0);
}
}
8. Creating Packages Access Packages
- package package_name (자바 코드 최상단에)
- creat package
- 여러 개의 클래스를 하나의 패키지에 넣음
- 드래그 해서 넣으면 상단에 package 선언 자동으로 생성됨 in eclipse
// creat package
// 여러 개의 클래스를 하나의 패키지에 넣음
// 드래그 해서 넣으면 상단에 package 선언 자동으로 생성됨 in eclipse
import NameOfPackageName.*;
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java programming 자바 프로그래밍 실습 : Invoice Calculation (0) | 2021.03.22 |
---|---|
Java Code Conventions (0) | 2021.03.17 |
Java programming 자바 프로그래밍 실습 : 시험 시스템 (0) | 2021.03.11 |
Java programming 자바 프로그래밍 실습 : 급여 계산기 (0) | 2021.03.11 |
Java programming 자바 프로그래밍 실습 : 원기둥 부피 구하기 (0) | 2021.03.11 |