노베이스에서 개발자까지
자바 6일차(클래스,필드,메서드,) 본문
객체
속성과 동작으로 구성
동작: 웃다,걷다 ,달린다 ,멈춘다
이를 필드라 함
속성:이름, 나이, 모델명, 색깔
이를 메소드라 함
사람이 전자계신기를 이용하고 , 전자계산기는 계산 결과를 사람에게 보여줌
( 메소드 호출) (결과 리턴)
객체간 상호작용 수단은 메소드이며 객체가 다른 객체의기능을 이용하는 것이 메소드 호출
리턴값 = 전자계산기객체.메소드(매개값1, 매개값2, 등등) ;
ex)
10과 20을 주고 더하기 기능
10,20 은 더하기 기능의 매개값
int result = Calculator.add(10, 20);
리턴한 값을 int 변수에 저장
객체지향: 만들고자 하는 완성품인 객체를 모딜링하고, 집합 관계에 있는 부품 객체와
사용 관계에 있는 객체를 하나씩 설계한 후 조립하는 방식으로 프로그램을 개발하는 기법
클래스
public class Car { //클래스 선언의 시작
} // 클래스 선언의 끝
설계도에 해당하는 부분으로 객체를 생성하기 위한 필드와 메소드가 정의되어 있음
클래스로부터 만들어진 객체를 해당 클래스의 인스턴스라고 함
자동차 객체는 자동차 클래스의 인스턴스인 셈
하나의 클래스로부터 여러 개의 인스턴스를 만드는 것 = 동일한 설계도로 여러 대의 자동차를 만드는 것
인스턴스화 : 클래스로부터 객체를 만드는 과정
설계 인스턴스화
개발자 > 클래스(설계도) > 인스턴스(객체) (자동차)
new
new 클래스();
클래스로부터 객체를 생성시키는 연산자
new 연산자 뒤에는 생성자가 오는데, 생성자는 클래스() 형태를 가지고 있음
클래스 변수 ;
변수 = new 클래스();
클래스 선언
public class Student {
}
클래스로부터 객체 생성
public class StudentExample {
public static void main (String[] args ) {
Student s1 = new Student(); // new로 객체1 생성
Student s2 = new Student(); // new로 객체 2 생성
System.out.println("s2 변수가 또 다른 Student 객체를 참조합니다.");
}
}
하나의 클래스로 객체 1, 2 두개를 만들 수 있음
클래스의 구성 멤버
필드,생성자,메소드 가 있고 생략이 될수도 복수의 개수로 생성될 수도 있음
public class ClassName{
int fieldname ; //필드 : 객체의 데이터가 저장되는 곳
ClassName() { 생성자 : 객체 생성 시 초기화 역할 담당
}
void methodName() { 메소드 : 객체의 동작에 해당하는 실행블록
}
}
필드
선언 형태는 변수와 비슷 하지만 변수와 다름
변수는 생성자와 메소드 내에서만 사용되고 생성자와 메소드가 실행 종료되면 자동 소멸되지만
필드는 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재함
생성자
생성자는 new 연산자로 호출되는 특별한 중괄호{} 블록.
생성자의 역할은 객체 생성 시 초기화를 담당
필드를 초기화 하거나 메소드를 호출해서 객체를 사용할 준비를 함
메소드와 비슷하게 생겼지만, 클래스 이름으로 되어 있고 리턴 타입이 없음
메소드
객체의 동작에 해당하는 중괄호{}블록을 말함
메소드를 호출하게 되면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행됨
메소드는 객체 간의 데이터를 전달하는 수단, 외부(호출한 곳)로부터 매게 값을 받아 실행에 이용하고,
실행 후 결과 값을 외부(호출한 곳)로 리턴할(돌려 줄)수도 있음
필드 선언
타입 필드 [ = 초기값 ] ; 변수랑 비슷하지만 다름
String compnay = "현대자동차" ;
String model = "그렌저" ;
int maxSpeed = 300;
int productionYear ;
boolean engineStart;
클래스 필드 선언
public class Car{
String compnay = "현대자동차" ;
String model = "그렌저" ;
String color = " 검정 " ;
int maxSpeed = 350;
int Speed ;
}
외부 클래스에서 Car 필드값 읽기와 변경
public class CarExample{
public static void main(String[] args) {
//객채셍성 (인스턴스)
Car myCar = new Car();
//필드갑 읽기
Systemout.println("제작회사: " +myCar.company);
Systemout.println("모델명: " + myCar.model);
Systemout.println("색깔: " + myCar.color) ;
Systemout.println("최고속도: " + myCar.maxSpeed);
Systemout.println("현재속도: " + myCar.speed);
myCar.speed = 60;
SYstem.out.println("수정된 속도: " + myCar.speed);
}
}
생성자
new 연산자로 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당
객체 초기화란 필드를 초기화 하거나 메소드를 호출해서 객체를 사용할 준비를 하는것을 말함
public class Car {
Car(String color, int cc) {
}
}
//생성자를 호출해서 객체 생성
public class carExample{
public static void main(String[] args) {
car my Car = new Car("검정", 3000);
//Car myCar = new Car(); << x 기본 생성자를 호출할 수 없음
}
}
필드 초기화
public class Korean {
String nation = "대한민국" ;
String name;
String ssn;
Korean k1 = new Korean();
Korean k2 = new Korean();
=====================================
krean 클래스에 nation 필드를 선언하면서 "대한민국"으로 초기값을 줘서
Korean 클래스로 부터 생성된 k1 k2 객체의 nation 필드에는 대한미눈기 들어감
======================================
public class Korean {
//필드
String nation = "대한민국" ;
String name;
String ssn;
// 생성자
public Korea(String n, String s) {
name = n;
ssn= s;
}
}
===================================
Korean k1 = new Korean("박자바", "011225-1234567");
Korean k2 = new Korean("김자바", "930525-0654321");
코드에서 박자바, 감자바는 매개 변수 n을 통해 전달되고
주민등록 번호는 매개 변수 s를 통해 전달이 됨
=====================================
public class Korean {
//필드
String nation = "대한민국" ;
String name;
String ssn;
// 생성자
public Korea(String n, String s) {
name = n;
ssn= s;
}
}
객체 생성 후 필드값 출력
public class KoreanExample {
public static void main(String[] args) {
Korean k1 = new Korean ("박자바", "011225-1234567");
system.out.println("k1.name : " + k1.name);
system.out.println("k1.ssn : " + k1 ssn);
Korean k1 = new Korean ("김자바", "93525*0654321");
system.out.println("k2.name : " + k2.name);
system.out.println("k2.ssn : " + k2 ssn);
}
}
출력되는 값
k1.name : 박자바
k1.ssn : 011225-1234567
k2.name: 김자바
k2.ssn : 930525-0654321
============================================================
6일차
클래스 끝날때 까진 그럭저럭 따라갈만 했는데
갑자기 어마어마한 속도로 치고나가서 완전히 놓쳐버렸다.
강의 내용을 놓치니 오늘 수업한 내용 복습은 의미가 없을 거 같아서
집에 가지고 있던 책으로 앞에부터 복습했는데
들인 시간에 비해 진도가 너무 느린 거 같다.
딜레마에 빠져버렸다
'Java > 멀캠 자바' 카테고리의 다른 글
자바 5일차(배열) (0) | 2022.09.23 |
---|---|
자바 4일차 (반복문, for, while, break, continue) (2) | 2022.09.23 |
자바 3일차 (연산자, 제어문) (0) | 2022.09.22 |
자바 2일차 (자료형, 변수, 스캐너 클래스, 타입 변환) (2) | 2022.09.20 |
자바 1일차 (자바 설치 및 기본적인 것들) (2) | 2022.09.19 |