2013-09-27 2 views
1

그래서 저는 Udacity에서 Java로 손을 찍기 시작했습니다. 최근에 저는이 질문에 대해 도움을 청했습니다. 링크 :인스턴스 변수를 혼동하여 새로운 객체와 메소드를 생성합니까?

좋아 https://www.udacity.com/course/viewer#!/c-cs046/l-183784769/e-186954461/m-188821863

질문, 내가 혼란 스러워요과 도움이 필요합니다.

지금까지 "자바 프로그래밍에서 우리는 클래스를 만들고, 그 클래스에서 우리는 객체 (?)를 만들고 이러한 객체를 사용하는 메소드를 만들고 우리는 이러한 객체를 저장하기 위해 변수를 사용한다고 생각합니다. 정정 해주세요. 지금까지 잘못했을 경우 ...

인스턴스 변수는 해당 클래스의 모든 메소드가 액세스 할 수있는 변수라는 것을 알고 있습니다. 그래서이 경우 : private String name;private String friends; -이 인스턴스 변수는 어디에 저장 되나요? 이름과 친구 이름이 무엇입니까 ??

Public 인터페이스는 기본적으로 방법 헤드/제목입니다 -이 경우이 있었다 (?) : public void addFriend(Person friend) 그래서 여기에 단어 "addFriend"컴퓨터 알고 어떻게하는지 때문에, 우리는이 곳을 선언 않았다위한 A1) 그것은 심지어 무엇을 의미합니까?

b1) addFriend 메서드에 대한 인수에서 (Person friend)의 의미는 무엇이며 어떻게 선언 했습니까? 우리가 만든 인스턴스 변수가 "friend"가 아니라 "friend"였기 때문에 friend라는 단어는 인스턴스 변수가 될 수 없습니다.

A2) friend.name의은 "친구"개체입니까? B2) 그리고 ".name"이 인스턴스 변수라고 가정합니다. C1) 개체에 변수를 할당하려면 항상 개체를 넣은 다음 .variableName?

마지막으로 별도의 질문으로 : 어떻게 친구 추가 방법에 대한 방법을 알아 내야합니까? 저는 프로세스/개념에 대해 말하고 있습니다. 즉, 개체가 무엇인지 살펴본 다음 무엇을 넣을 지 알아 봅니다. 메서드 인수에서 ???

사전에 도움을 주셔서 감사합니다 내 멍청한 놈 - 전자 네스 :

+2

클래스는 * 정의 * (청사진처럼) - 메서드 (작업)를 포함하고 인스턴스 변수를 정의합니다 (이름이 의도를 전달해야 함). 객체는 클래스의 * 인스턴스 * (세분화 된 하우스와 같은)입니다. 실제 [인스턴스] * 데이터 *가있는 곳입니다. – user2246674

+0

안녕하세요 @ 사용자, SO에 오신 것을 환영합니다. – Ben

+0

BTW는 동시에 많은 질문을하지 않으려 고합니다. 그래서 단문, 단답형, 짧고 달콤한, 텍스트 벽이 없습니다. – Ben

답변

1

, 그것은 당신의 이름과 친구

이름을 지정합니다. 그들의 유형은 String입니다. 그래서 "Bob", "Felicia"또는 "Curtis"와 같은 문자열을 기대합니다. 문자열이라면 "물병"이나 "스크린 도어"등으로 설정할 수도 있습니다.

그러나 friends은 둘 이상의 친구를 제안하기 때문에 문자열의 이상한 이름입니다. 일반적으로 List을 사용합니다. 하지만 어쩌면 아직 그걸 알지 못했을 수도 있습니다.

Public 인터페이스는 기본적으로 방법 헤드/제목이다 (?) -

인터페이스는 클래스 템플릿입니다. 어떤 사람들은 "계약"이라는 단어를 좋아합니다. 그것은 단지 "당신은 다음과 같은 방법을 가져야합니다."라고 말하는 것입니다 : blah(), blee(), bloo().

귀하의 예는 인터페이스를 사용하지 않으므로 더 구체적 일 수는 없습니다. 그래서 여기에 "addFriend"라는 단어에 대한

, 어떻게 컴퓨터가 그 무엇도 의미를 알 수 없기 때문에 우리가이 곳을 선언했다?

그것은 방법, 그래서 당신은 새로운 일을 할 때이 클래스에 오므입니다. 나중에 사람을 인스턴스화하면 (즉, Person Joe = new Person()) addFriend()으로 전화하여 Joe에게 친구를 제공 할 수 있습니다.

Person 클래스를 인스턴스화 할 수 있으며 각 클래스는 고유 한 addFriend 메소드를 갖습니다. addFriend 방법에 대한 인수에

, 무엇을 (사람이 친구가) 의미와 우리가 어떻게 그것을 얻을/선언 했습니까?

마지막 대답을 참조하십시오. 우리가 만든 인스턴스 변수가 올바른 "친구"없습니다 "친구"때문에

인수 (사람 친구)에서 단어 친구, 단어 친구는 인스턴스 변수가 될 수없는 이유는 무엇입니까?

인수 friend 메소드 국부적이다. 메소드 밖에서는 보이지 않습니다. 그래서 당신이 원하는대로 부를 수 있습니다.

나는 그들과 같이 인수를 걸 빨리 내가 ​​알 수 있도록 인수 매개 변수에 0를 추가하려면 :

public void addFriend(Person friend0) 
{ 
    ...do stuff with friend0... 
} 
friend.name에 대한

이의 "친구"객체이다 ?

name 개인이고 당신이 말하는 예, Person Joe = new Person(); System.out.println(Joe.name)를 들어 볼 수 없기 때문에 이것은 약간 오해의 소지가 이것은 잘못이다.

그러나 그렇습니다. friendPerson의 인스턴스입니다.

그것을 수정 중이 같은 name (권장하지 않음) 공용 또는 편지 getName() 방법, 만들려면 :

public String getName() 
{ 
    return name; 
} 

이 방법은 당신이 실수로 다른 사람의 이름을 나중에 변경 (재설정) 할 수 없기 때문에 더 나은입니다.

나는 ".name"이 인스턴스 변수라고 가정합니다.

"인스턴스"는 새 클래스를 만들 때입니다. 인스턴스 변수는 클래스에있는 변수입니다. 따라서 name이고 인스턴스 변수는입니다. 단 하나만은 아닙니다.

다음 .variableName을 우리가 항상 객체를 배치해야합니까 객체에 변수를 할당하는?

당신은 int x = ... 또는 String address = ... 같이 입력 한 다음 이름을 넣어. 예를 들어, Person의 많은 경우 내가 전에 말한 것처럼, 당신은

Person Joe = new Person(); 
Person Wilhelmina = new Person(); 
Person Winifred = new Person(); 

같은 자바 말해 ... 그리고 당신은 (각 특정 인스턴스에 새 만들 때마다 친구와 물건을 추가 클래스라고 불린다). 당신을 어떻게

이 방법은 친구의 방법을 추가 알아낼해야 우리

단지 friends 문자열로 친구 이름을 추가하는 측의 필기 낙서는 말한다. 따라서이 메서드는 Person 유형의 friend을받은 다음 getName()을 호출하여 해당 이름을 String으로 가져온 다음 해당 인스턴스의 friends에 추가해야 할 것입니다.

0

클래스는 개체입니다 용서하십시오. 클래스 내에서 생성자 (객체가 어떻게 인스턴스화되는지)를 정의합니다. 그런 다음 개체가 사용할 메서드를 만듭니다. 예 : contact.getName(). 죄송합니다. 전화로 답장하는 자세한 답변을 드릴 수 없습니다. 그들에게이 예 변수 저장을 무엇

+0

이것은 답이 아닌 주석과 같습니다. – Max

0
  1. 클래스는 개체의 청사진입니다. 클래스를 디자인 할 때는 해당 클래스 유형에서 이 생성 될 객체에 대해 생각하십시오. 객체가 자체적으로 알고있는 것을 인스턴스 변수라고하며 객체가 수행 할 수있는 것을 메소드라고합니다.

  2. 클래스에서 인스턴스를 선언하면 다른 참조 변수로 참조되는 다른 객체에 대한 정보가 저장됩니다. 그래서 여러 객체에 대한 정보를 저장합니다.

a1. 클래스에서 공용 메서드를 선언 할 때 컴파일러에서 메서드를 알 수 있도록 다른 메서드를 선언 할 필요가 없습니다. 참조 변수가 생성되면 해당 메소드에 액세스 할 수 있습니다. 따라서 메서드는 객체의 일부입니다.

B1. 매개 변수는 "Person"유형이고 메소드에 대한 "local"유형입니다. 따라서 "friends"클래스에서 선언 된 변수와 "friend"매개 변수는 완전히 연결되어 있지 않습니다. "Person type object"를 매개 변수로 사용합니다.

A2 + B2 + C1. "friend.name"의 경우 참조 변수 "friend"로만 객체를 참조 할 수 있습니다. 당신은 객체가 두 가지 유형의 것들을 가질 수 있다는 것을 알고 있습니다 ... 인스턴스 변수와 메소드.