class Point{ //Point라는 이름을 가진 새로운 자료형(클래스)을 정의
int x; //Point라는 새로운 클래스의 속성으로 x를 정의
int y; //Point라는 새로운 클래스의 속서으로 y를 정의
//Point 클래스의 y의 값을 변경하기 위한 기능을 정의
public void setY(int yCoord){ // 매개변수로 어떤값으로 변경할지 전달받는다.
y = yCoord; //전달받은 매개변수를 속성(맴버변수) y에 저장
return ;//메소드의 내용이 끝나면 자신을 호출한 곳으로 돌아간다. 반환값이 없다.
}
//Point 클래스의 y의 값을 읽어오기(갖고오기) 위한 기능 정의
public int getY(){
return y; // 속성 y값을 돌려 준다.
}
public int getX(){
return x;
}
void setX(int xCoord){
x= xCoord;
return;
}
}
public class PointTest {
public static void main(String[] args) {
//Point p1;
//p1 = new Point();
Point p1 = new Point();
p1.setX(100);
p1.setY(200);
Point p2 = new Point();
p2.setX(100);
p2.setY(300);
System.out.println(p1.getX());
System.out.println(p1.getY());
System.out.println("----------------------");
System.out.println(p2.getX());
System.out.println(p2.getY());
}
}
메소드의 매개변수이름을 의미 있는 이름으로 정해 주다 보면 속성(맴버변수)이름과 겹치게 된다.
메소드 안에서는 매개변수이름이 우선순위가 높아서 매개변수의 값을 다시 매개변수에 넣어라 라는 의미가 되고 속성의 값이 초기화 되지 않는다.
this
class Book{
private String title;
private String author;
public String getAuthor() {
return this.author;
}
public String getTitle(){
return this.title;
}
public void setTitle(String title){
this.title = title;
return;
}
public void setAuthor(String author) {
this.author = author;
return;
}
}
public class BookTest {
public static void main(String[] args) {
Book b1;
b1= new Book();
b1.setTitle("Greate Java");
b1.setAuthor("bob");
System.out.println(b1.getTitle());
System.out.println(b1.getAuthor());
}
}
Book 클래스에 getter, setter 메소드를 보면 this가 있는데 이 this는 클래스의 멤버함수를 가르킨다
this()
class Dog{
private String name;
public String breed;
private int age;
public Dog(String name, String breed, int age) {
this.name = name;
this.breed = breed;
this.age = age;
}
public Dog(String name, int age) {
this(name,"진돗개",age);
}
public Dog() {
this("순심",5);
System.out.println("기본 생성자 동작함!");
}
}
생성자
생성자 중복(constructor overloading)
메소드 오버로딩(method overloading)
class Employee{
private String name;
private String phone;
private int salary;
public Employee(String name, String phone, int salary) {
this.name = name;
this.phone = phone;
this.salary = salary;
}
public Employee() {
name = "없음";
phone = "없음";
salary = 0;
}
}
기본 생성자
class Person{
private String name;
private int age;
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class PersonTest {
public static void main(String[] args) {
Person p1 = new Person();
System.out.println(p1.getName());
System.out.println(p1.getAge());
}
}
사용자가 생성자를 한개도 만들지 않으면 기본생성자가 제공되기 때문에 위와 같이 객체를 생성 할 수 있다
그러나, 사용자가 생성자를 한개라도 만들기 시작하면 더이상 "기본생성자"를 제공하지 않는다.
국비학원에서 배운것과 따로 공부한 것을 정리한 것입니다
참고
나도코딩 유튜브