구체적, 추상적 데이터 단위
객체 지향 프로그래밍 과정)
1. 객체를 정의
2. 객체의 기능 구현
3. 객체 사이의 협력 구현
객체에 대한 속성과 기능을 코드로 구현한 것
속성)
객체의 특성, 속성, 멤버 변수 => class안에서 정의
기능)
객체가 수행하는 기능들을 메서드로 구현
method, member function
하나의 java파일에 하나의 클래스를 두는 것이 원칙 but, 여러개의 클래스가 같이 있는 경우 public클래스는 단 하나이며, public 클래스와 자바의 파일의 이름은 동일해야 한다.
주의) 자바의 모든 코드는 class내부에 위치
학생 class
public class Learn {
int studentID;
String studentName;
int grade;
String address;
//메서드 추가
public class Learn {
//학생 class
int studentID;
String studentName;
int grade;
String address;
public void showStudentInfo() {
System.out.println(studentName+ "," + address); //이름, 주소 출력하는 메서드
}
}
main메소드가 있어야지 작동
public class Learn {
//학생 class
int studentID;
String studentName;
int grade;
String address;
public void showStudentInfo() {
System.out.println(studentName+ "," + address); //이름, 주소 출력하는 메서드
}
public static void main(String[] args) {
Learn studentLee = new Learn();
studentLee.studentName = "이순신";
studentLee.address = "서울";
studentLee.showStudentInfo();
}
}
함수의 일종
객체의 기능을 제공하기 위해 클래스 내부에 구현되는 함수
함수?
하나의 기능을 수행하는 일련의 코드 중복되는 기능은 함수로 구현하여 함수를 호출하여 사용한다.
함수를 사용하는 이유)
코드를 효율적으로 구현하기 위해서이다.
-> 필요한 기능별로 구현해 놓으면 코드를 효율적으로 사용할 수 있다.
유지보수가 쉬움
-> 함수를 사용하지 않고 여러 곳에 많이 쓰면 에러 발생시 다른 곳도 똑같이 발생하기 떄문에 함수를 이용하면 함수 하나만 고치면 된다.
함수 정의하기
함수를 코드를 구현 -> 함수의 이름, 매개변수, 반환 값을 선언하고 코드를 구현
public class FuntionTest {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
int sum = addNum(num1, num2);
System.out.println(sum);
}
public static int addNum(int n1, int n2) {
//int :함수 반환형, 반환 값이 없는 경우 void로
//addNum : 함수 이름
//int n1, int n2 : 매개변수 , 함수의 수행을 위해 필요한 변수
int result = n1 + n2;
return result; // return : 예약어
}
}
스택 : 함수가 호출될 때 사용하는 메모리
함수의 기능 수행이 끝나면 자동으로 반환되는 메모리
클래스를 사용하기 위해서 클래스를 생성해야 한다.
new 예약어를 이용하여 class생성
클래스형 변수이름 = new 생성자();
public class Student { //클래스 생성
int studentID; //객체 생성
String studentName; //객체생성
int grade;
String address;
public void showStudentInfor() { //함수
System.out.println(studentName + "," +address);
}
public String getStudentName() { //함수
return studentName;
}
public void setStudentName(String name) { //함수
studentName = name;
}
}
public class StudentTest { //동작
public static void main(String[] args) {
Student studentLee = new Student();
studentLee.address ="서울특별시"; //참조변수 ,인스턴스 생성
studentLee.studentName ="이이이";
studentLee.studentID = 100;
studentLee.showStudentInfor();
}
}
/ public Student(int id, String name) {
studentID = id; //매개변수가 있는 생성자
studentName = name;
}/ //생성자를 만들면 이거땜에 오류남 -> main 안에 id, name지정해 준걸 지워버리고 객체 생성하면서 적으면 됨.
//ex) student studentLee = new student(id값, 이름)을 설정해주면 됨.
객체 : 객체지향 프로그램의 대상, 생성된 인스턴스
클래스 : 객체를 프로그래밍하기 위해 코드로 만든 상태
인스턴스 : 클래스가 메모리에 생성된 상태
멤버 변수 : 클래스의 속성, 특성
메서드 : 멤버 변수를 이용하여 클래스의 기능을 구현
참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수
참조 값 : 생성된 인스턴스의 메모리 주소 값
필요에 의해 생성자를 추가하는 경우 여러 개의 생성자가 하나의 클래스에 있다.
public class Person{
String name;
float height;
float weight;
public Person() { //디폴트 생성자
}
public Person (String pname) { //이름을 매개변수로 입력받는 생성자
name = pname;
}
//이름 키, 몸무게를 매개변수로 입력받는 생성자
public Person(String pname, float pheight, float pweight) {
name = pname;
height =pheight;
weight =pweight;
}
}