public class Dog {
private String name;
private int age;
public Dog(String name, int age) {
this.name = name;
this.age = age;
}
public void introduce() {
System.out.println("name " + name + "age" + age);
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("Dog", 10);
dog.introduce(); // name Dog age 10
}
}
김은서
만약 인스턴스 메서드가 많이 존재한다면, 그 메서드를 하나씩 부를 때 마다 계속 인자값으로 넣어줘야 하는 번거로움이 발생한다. 장정아
this를 쓰는 이유는 효율의 문제가 아닌, Object와 클래스 안에 있는 특징을 구별해주기 위해 this를 쓴다. 은서님 코드를 보면, main영역에서는 이름이 없는 누리고, Dog로 만들어지는 순간 dog의 누리가 되는 것이다. 떠돌아 다니는 Object의 개념이 아니라, Dog 객체에 이름을 붙혀주는 개념이다.김은양
이름만 같을 때는 구별이 어렵다. 구별 하는 것을 매개변수로 뭘 받냐로 구분할 수 있기 때문에 매개변수 개수나 타입이 달라야 호출할 수 있다. 그렇기 때문에 오버로딩이 안된다.장정아
다른 클래스의 인스턴스를 사용하기 위해서는 상속관계일 때 생성자 만들 수 있다. 김건
일반적인 포함관계에서는 생성 가능하다.접근제어자 | 변수 / 메서드 | 클래스 | 생성자 |
---|---|---|---|
public | 어디서든 가능하다 | ||
default | 같은 패키지에서만 가능 | ||
private | 같은 클래스에서만 접근 가능 |
public class Gombo{
String name = "김근보"; //접근제어자 추가
int age = 13; //접근제어자 추가
void printInfo(){ //접근제어자 추가
System.out.println("이름: " + name);
System.out.println("나이: " + age);
}
public static void main(String[] args) {
Gombo gombo = new Gombo();
gombo.printInfo();
}
}
public class Gombo{
private String name = "김근보"; //접근제어자 추가
private int age = 13; //접근제어자 추가
private void printInfo(){ //접근제어자 추가
System.out.println("이름: " + name);
System.out.println("나이: " + age);
}
public static void main(String[] args) {
Gombo gombo = new Gombo();
gombo.printInfo();
}
}
public class Go{
String name = "고예진";
int age = 10;
void printAge(){
System.out.println(age);
}
static void printName(){
System.out.println(name);
}
static void printInfo(){
printName();
printAge();
}
public static void main(String[] args) {
Go go = new Go();
}
}
printName(), printAge()에서 오류가 발생하여 static 메서드에서 인스턴스 사용할 수 없는 것 것을 의도했음
static을 사용하지 않고 name을 사용하려면 어떻게 작성해야하는가? → 인스턴스화 해야한다
public class Go {
String name = "고예진";
int age = 10;
void printAge(){
System.out.println(age);
}
static void printName(){
Go go = new Go();
System.out.println(go.name);
}
static void printInfo(){
printName();
Go go = new Go();
go.printAge();
}
public static void main(String[] args) {
Go go = new Go();
}
}
public class Sheep {
String A;
Sheep(String B){
this.(빈칸) = (빈칸);
}
}
public class Sheep {
String A;
Sheep(String B) {
this.A = B;
}
}
김은양
빼도 상관은 없지만, 변수가 많아지면 문제가 생길 수 있음