클래스 & 객체 (1)

hyeu·2023년 1월 15일
0

자바

목록 보기
4/7

객체

구체적, 추상적 데이터 단위

객체 지향 프로그래밍 과정)
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();
}
}

다른 클래스에서 불러서 실행시키는 방법

  1. inherited abstract methods
  2. inherited abstract methods + public static void(String[]args)
    1번은 class를 쓰고, 2번이 동작하게 만들면 됨

메서드

함수의 일종
객체의 기능을 제공하기 위해 클래스 내부에 구현되는 함수

함수?
하나의 기능을 수행하는 일련의 코드 중복되는 기능은 함수로 구현하여 함수를 호출하여 사용한다.

함수를 사용하는 이유)
코드를 효율적으로 구현하기 위해서이다.
-> 필요한 기능별로 구현해 놓으면 코드를 효율적으로 사용할 수 있다.
유지보수가 쉬움
-> 함수를 사용하지 않고 여러 곳에 많이 쓰면 에러 발생시 다른 곳도 똑같이 발생하기 떄문에 함수를 이용하면 함수 하나만 고치면 된다.

함수 정의하기
함수를 코드를 구현 -> 함수의 이름, 매개변수, 반환 값을 선언하고 코드를 구현

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 : 예약어
}
}

스택 메모리

스택 : 함수가 호출될 때 사용하는 메모리
함수의 기능 수행이 끝나면 자동으로 반환되는 메모리

class & instance

class생성하기

클래스를 사용하기 위해서 클래스를 생성해야 한다.
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;
}
}

0개의 댓글