강의로 돌아가기
장혜영

이해가 안돼는부분이 있어요 ㅠ

예제처럼 public class 클래스명{}, class클래스명{}
두가지의 차이점이 뭔가요??
밑에질문 하고 같은질문이지만 밑에분 질문답변은 도저히 이해가 안돼요 ...ㅠ

작성중인 코드―Person.java
1
2
3
4
5
6
7
8
9
class Person{
    String name;
    int age;
    public Person(String name, int age){
        //매개변수로 받은 name과 age를 각각 name필드, age필드에 저장하세요.
    this.name = name;
    this.age = age;
    }
}
작성중인 코드―PersonExam.java
1
2
3
4
5
6
7
//실행을 위한 코드입니다.
public class PersonExam{
    public static void main(String[] args){
        //Person클래스에서 String과 int를 매개변수로 받는 생성자를 호출합니다.
        Person person = new Person("사람",25);
    }
}
2 개의 답변
프로그래밍이뭔가여

전자를 public, 후자를 default 라고 합니다. (그외 다른 접근지시제어자에는 protected, private가 있습니다)
default (그러니까 아무것도 안달린 것) 메소드는 서로 다른 패키지(강의 계속 보시다보면 나올 거에요) 안에 있으면 부를 수가 없습니다.
그런데 public이라고 적혀있는 메소드는 패키지가 다르든, 클래스가 다르든, 뭐 하여튼 어디에서든 이 메소드를 부를 수가 있습니다.
이 생성자가 근데 클래스가 인스턴스화되면 바로 호출되어야 하잖아요.
그러니까 생성자가 default로 설정되면 다른 패키지에서 이 클래스를 인스터스화 시키지 못한
이 코드에서는 public 을 쓰든 아무거도 쓰지 않든간에 상관이 없을 것입니다.
왜냐하면 이 코드에서 두 클래스는 서로 같은 패키지 안에 있거든요.
결론:생성자에 public을 쓰지 않으면 다른 패키지에서 그 클래스를 인스턴스화 시킬 수 없다 입니다

김수연

프로그래밍이뭔가여 님의 답변 받고, 덧말 붙입니다.

class Peroson은 Person 이라는 하나의 모델타입을 만든것과 마찬가지 입니다.
예) class Peroson: 사람 성격, 나이, 이름, 성별 등을 정의

public class PersonExam 은 public을 선언하여, 어디서든 접근 가능합니다. 공통 클래스라고 해두죠.
class Peroson에서 이미 person에 대한 정의를 해 두었고, person이란 객체(모델)의 초기모습 or 커다란 틀을 만들어두었기 때문에
Person person = new Person(사람,25); 이라는 person 의 상세 내용을 넣어 만들 수 있는 것 입니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.