Java 스터디 6일차

프로그래밍/Java

2018. 10. 21. 15:20

반응형

※이 글은 2018/08/05 ~ 2018/08/27일까지 했던 자바 스터디 노트를 올려놓은 겁니다. ※

05-4 클래스와 인스턴스
클래스 사용과 main( ) 함수
 
프로그램을 시작하는 main( ) 함수
클래스를 사용하여 프로그램을 실행하려면 먼저 main( ) 함수를 알아야 한다.
main( ) 함수는 자바 가상 머신이 프로그램을 시작하기 위해 호출하는 함수이다.
클래스 내부에 만들지만, 클래스의 메서드는 아니다.
 
main( ) 함수에서 클래스를 사용하는 방법
1. 클래스 내부에 main( ) 함수를 만드는 
2. 외부에 테스트용 클래스를 만들어 사용하는 
 
Student 클래스에 main( ) 함수 포함하기
Student 클래스에 main( ) 함수 추가하기

package chapter2; public class chapter2 { public static void main(String[ ] args) { int studentID; String studentName; int grade; String address; public String getStudentName( ) { return studentName; } public static void main(Strint[ ] args) { Student studentAhn = new Student( ); StudentAhn.studentName = "안연수"; System.out.println(studentAhn.studentName); System.out.println(studentAhn.getStudentName()); } } }

위와 같이 클래스 내부에 main( ) 함수를 만들면  클래스가 프로그램의 시작 클래스이다.
Main( ) 함수를 포함한 실행 클래스 따로 만들기

Student Test 실행 클래스 만들기

package chapter2; public class StudenTest { public static void main(String[] args) { Student studentAhn = new Student( ); studentAhn.studentName = "안승연"; System.out.println(studentAhn.studentName); System.out.println(studentAhn.getStudentName( )); } }


 클래스가 같은 패키지에 있으면 패키지 이름은 동일하게 해줍니다.
그런데 만약 패키지가 다르면 import 문을 사용해서 함께 사용하기를 원하는 클래스를 불러와야 합니다.
 
(클래스 이름이 같아도 패키지가 다르면 다른 클래스이다.)
 
new 예약어로 클래스 생성하기
클래스 형 변수 이름 = new 생성자;
클래스를 생성하는 코드는 위와 같습니다.
 
클래스 자료형 변수를 선언하고 new 예약어로 생성자를 호출하여
대입하면 새로운 클래스가 생성됩니다.
 
앞에서 얘기했던 코드를 다시 한 번 더 보면
StudentstudentAhn = new Student( );
Student 클래스 자료형으로 studentAhn 변수를 선언하고 new Student( );
Student 클래스를 생성하여 studentAhn 대입한다는 뜻입니다.
이때 studentAhn 참조 변수라고 하고,  변수가 생성된 인스턴스를 가리킵니다.
 
인스턴스와 참조 변수
객체, 클래스, 인스턴스
객체란 '의사나 행위가 미치는 대상'
클래스란 '객체를 코드로 구현한 '
인스턴스란 '클래스가 메모리 공간에 생성된 상태'

또한 생선 된 클래스의 인스턴스를 객체라고도 합니다.
 
인스턴스 여러  생성하기

package chapter2; public class StudenTest { public static void main(String[] args) { Student studentAhn = new Student( ); studentAhn.studentName = "안승연"; System.out.println(stdent1..getStudentName( )); Student2 Student2 = new Student( ); student2. studentName = "안연수"; System.out.println(student2.getStudentName( )); } }

참조 변수 사용하기
참조 변수를 사용하면 인스턴스의 멤버 변수와 메서드를 참조하여 사용할  있는데 이때 도트 연산자를 사용한다.
 
참조 변수.멤버 변수
참조 변수.메서드
 
요런 식으로 사용한다.
 
인스턴스와  메모리
지역변수에 생성된 인스턴스를 대입하는 것이
인스턴스가 생성된  메모리의 주소를 대입한다는 것과 같은 의미입니다.
 
 메모리란 객체가 생성될  사용하는 공간입니다.
 
클래스에 선언한 멤버 변수를 다른 말로 '인스턴스 변수'라고도 부릅니다.
 
참조 변수와 참조 
참조 변수는  메모리에 생성된 인스턴스를 가리킵니다.
 
객체 지향 프로그램 관점에서 용어를 정리한 

용어
설명
객체
객체 지향 프로그램의 대상, 생성된 인스턴스
클래스
객체를 프로그래밍하기 위해 코드로 만든 상태
인스턴스
클래스가 메모리에 생성된 상태
멤버 변수
클래스의 속성, 특성
메서드
멤버 변수를 이용하여 클래스의 기능을 구현
참조 변수
메모리에 생성된 인스턴스를 가리키는 변수
참조 
생성된 인스턴스의 메모리 주소 

05-5 생성자
생성자란?
생성자 만들기

package chapter2; public class StudenTest { public static void main(String[] args) { String name; float height; float weight; } }

생성자 테스트하기

package chapter2; public class StudenTest { public static void main(String[] args) { chapter2 personLee = new chapter2( ); } }

생성자가 하는 일은 클래스를 처음 만들  멤버 변수나 상수를 초기화하는 것입니다.
 
디폴트 생성자

생성자는 클래스를 생성할 때만 호출합니다.
생성자 이름은 클래스 이름과 같고, 생성자는 반환값이 없습니다.
 
생성자가 없는 클래스는 클래스 파일을 컴파일할  자바 컴파일러에서 자동으로
생성자를 만들어 줍니다.
이렇게 자동으로 만들어 주는 생성자를 디폴트 생성자라고 합니다.
 
디폴트 생성자는 매개변수가 없고 구현 코드도 없다.
 
디폴트 생성자

package chapter2; public class StudenTest { public static void main(String[] args) { String name; float height; floath wight; public Person( ) { } }

생성자 만들기
필요한 경우 프로그래머가 직접 생성자를 구현할 수도 있습니다.
 
생성자 만들기

package chapter2; public class StudenTest { public static void main(String[] args) { String name; float height; float wight; public chapter2(String pname) { name = pname; } }

생성자 테스트하기

package chapter2; public class StudenTest { public static void main(String[] args) { Person personLee = new Person( ); } }

 코드는 오류가 나옵니다.
오류를 해결하려면 매개변수가 있는 생성자로 호출하거나
프로그래머가 디폴트 생성자를 추가로 직접 구현하면 됩니다.

package chapter2; public class chapter2 { public static void main(String[ ] args) { String name; float height; float weight; public Person( ) { } public Person(String pname) { name = pname; } }

 
이제 Person 클래스를 생성할   생성자  하나를 선택해 사용할  있습니다.
 
1. 디폴트 생성자로 클래스를 생성한 경우
2. 이름을 매개변수로 받아 클래스를 생성한 경우
 
생성자 오버로드
이렇게 클래스에 생성자가   이상 제공되는 경우를 생성자 오버로드라고 합니다.
 
필요에 따라 매개변수가 다른 생성자를 여러  만들  있습니다.

05-6 참조 자료형
참조 자료형이란?
클래스 자료형으로 선언하는 참조 자료형 변수가 있습니다.
 
 
05-7 정보 은닉
get( ), set( ) 메서드
값을 얻는 메서드는 get( ) 메서드이고,
값을 지정하는 메서드는 set ( ) 메서드입니다.
참고로, get( ), set( ) 메서드는 이클립스에서 자동으로 만들  있습니다.
 
정보 은닉이란?
클래스 내부에서 사용할 변수나 메서드는 private으로 선언해서
외부에서 접근하지 못하도록 하는 것을 객체 지향에서 정보 은닉이라고 합니다.
 
자바에서 사용하는 접근 제어자를 정리한 

접근 제어자
설명
public
외부 클래스 어디에서나 접근할  있습니다.
protected
같은 패키지 내부와 상속 관계의 클래스에서만 접근할  있고
  클래스에서는 접근할  없습니다.
아무것도 없는 경우
default이며 같은 패키지 내부에서만 접근할  있습니다.
private
같은 클래스 내부에서만 접근할  있습니다.


반응형

'프로그래밍 > Java' 카테고리의 다른 글

Java 스터디 5일차  (0) 2018.10.19
Java 스터디 4일차  (0) 2018.10.17
Java 스터디 3일차  (0) 2018.10.17
Java 스터디 2일차  (0) 2018.10.14
Java 스터디 1일차  (0) 2018.10.14