class User{
public String getName(){
String name = "자바학생";
return name;
}
public void sayName(){
String myname = this.getName();
System.out.println(myname);
}
}

클래스 : 객체를 만들어 내기위한 설계도
객체 : 구현할 대상
인스턴스 : 설계도를 바탕으로 구현된 구체적인 실체
class Animal{ .... }
public class Main{
public static void main(String[] args){
Animal cat; // 객체
// 인스턴스화
// cat은 Animal클래스의 '인스턴스'
// 객체를 메모리에 할당
cat = new Animal();
}
}
클래스 vs 객체 :
-> 클래스는 '설계도', 객체는 '설계도로 구현한
모든 대상'을 의미
객체 vs 인스턴스 :
-> 클래스의 타입으로 선언되었을 때 객체라고 부르고,
그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고
부른다.
-> '인스턴스화 하여 레퍼런스를 할당한'객체를 인스턴스라고
말하지만, 엄격하게 객체와 인스턴스를 나누긴 어렵다.
멤버변수, 전역변수 = 필드(field)
지역변수
공통적인 이름 규칙
-> 영어+숫자+언더바(_)의 조합이고, 첫 글자는 반드시
영어로 표기한다.
클래스 이름 규칙
-> 첫 글자는 대문자로 시작, 나머지 글자는 소문자로 표시
-> 두 개 이상의 단어를 조합해야 할 경우 새로운 단어는
대문자로 시작한다.
class Member
class MyClass
class NetworkHelper
메서드, 변수이름 규칙
-> 대부분 소문자로 구성되지만, 두 개 이상의 단어를
조합할 경우 새로운 단어는 대문자로 표시한다
int age;
String user_name;
String userName;
String memberCount;
String membercount;
상수 이름 규칙
-> 모두 대문자로 표시한다.
final double PI;
final int COLOR;
new 키워드를 사용하여 객체가 생성될 때 자동으로 실행되는
특수한 형태의 메서드.
리턴형을 명시하지 않으며, 메서드의 이름은 클래스와 동일하다.
class User{
User(){
// 생성자
// 이 안은 객체가 생성될 때 자동으로 호출
}
}
User u = new User();
자동으로 실행된다는 특성 때문에, 객체가 생성되면서 해당
객체의 특성을 초기화 하기 위하여 사용된다.
(ex:멤버변수의 초기값을 할당하는 용도)

파라미터가 없는 생성자
클래스에 특별히 생성자가 정의되지 않은 경우 java컴파일러는
기본 생성자가 존재한다고 인식한다.
class User{
User(){
// 생성자는 있지만, 내용이 비어있다.
}
}
생성자도 메서드의 한 종류이므로 파라미터를 함께 정의하는 것이
가능하다.
생성자의 파라미터를 멤버변수에 복사하는 것으로 객체의 초기화를
외부적인 요인에 의해 처리할 수 있다.
class User{
String name;
int age;
User(String name, int age){
// 생성자 파라미터의 값을
// 필드에 복사
this.name = name;
this.age = age;
}
}
---------------------------------------
// 생성자에 파라미터가 정의된 경우 객체 생성 구문에서
// 해당 파라미터를 전달해야 한다.
User u = new User("자바학생", 20);
변수의 이름이나 메서드 이름 앞에 "접근 한정자"를 지정한다
접근 한정자
public
-> 모든 곳에서 접근 가능하다
-> 일반적으로 모든 메서드 앞에 명시한다.
private
-> 클래스 안에서만 사용 가능하고, 객체를 통해 접근할 수
없다.
-> 일반적으로 모든 멤버변수 앞에 명시한다.
protected
-> 현재 클래스 내의 다른 자원이나, 같은 패키지 안에
존재하는 클래스와 하위 클래스에서 접근 가능하다.
-> 잘 사용하지 않는다.
default
-> 접근 한정자를 명시하지 않은 경우. 현재 클래스 내의
다른 자원이나 동일 패키지 내의 다른 클래스에서 접근
가능하다.
-> 잘 사용하지 않는다.
멤버변수가 은닉된 형태로 선언된 경우 프로그램의 가장 근본적인
데이터에 접근하는 방법이 사라지므로 메서드를 통하여 간접적으로
접근하는 방법이 마련되어야 한다.
getter, setter는 은닉된 멤버변수에 간접적으로 접근하기
위하여 정의된 메서드들을 의미하는 용어
-> getter: 은닉된 멤버변수의 값을 리턴하기 위한 메서드
-> setter : 파라미터로 전달된 값을 멤버변수에 복사하기
위한 메서드
접근 한정자
public
-> 객체생성 가능하다. 서로 다른 소스코드에 정의된
클래스끼리도 객체 생성이 가능하다.
private
-> 클래스에 적용할 수 없다
protected
-> 클래스에 적용할 수 없다
default
-> 지금까지의 예제 형태
-> 동일한 소스코드에 정의된 클래스끼리만 객체로 생성
가능하다.
extends 키워드를 사용하여 부모 클래스의 이름을 명시한다.
public class 자식클래스 extends 부모클래스 {....}