[생활코딩]
클래스,인스턴스,객체 라는 말이 헷갈려서 확실하게 정리하려고 함.
들어가기에 앞서...
= 재활용 가능한 부품화
= 조립식 컴퓨터
1) 초기 Computer는 일체형
2) 기능별로 나눈 Computer
그렇다면 나눈 것이 꼭 정답인가?
최근에 나온 맥미니 같은 것을 보면 핸드폰처럼 일체형으로 변함( 초기 컴퓨터로 회귀??) = 정답은 없고 각자 어떻게 사용하는가에 따라 다름
객체지향, 절차지향 또한 그러하다 각자 필요한 것에 맞춰서 사용하면 되는 것 같음
둘의 관계는 설계도와 제품이라고 볼 수 있음(완벽한 설명은 아님)
클래스
(설계도)를 만들면 인스턴스
(제품)에서 그 설계도를 활용해서 다양한 제품을 출시하는 모습이 비슷함
[Class]
(Instance) (Instance) (Instance)
클래스 멤버
, 인스턴스 멤버
가 존재함class Calculator {
int left, right; //인스턴스 변수 선언
static double PI = 3.14 // 클래스 변수
public void setOprands(int left, int right){
this.left=left; //this.left : 전역 변수, left : 매개 변수
this.right=right;
}
public void sum(){ //메소드
System.out.println(this.left+this.right);
}
public void avg(){
System.out.println(this.left+this.right/2);
}
}
public class exampleCal{
public static void main(String[] args){
Calculator c1 = new Calculator(); # c1이라는 인스턴스 생성
c1.setOprands(10,20); # 인스턴수 변수(left,right) 지정
c1.sum(); // 30
c1.avg(); // 15
Calculator c2 = new Calculator();
c2.setOprands(30,40);
c2.sum(); // 70
c2.avg(); // 35
}
}
같은 클래스(설계도)로 다른 인스턴스(제품) 값이 나옴
ex)
class Calculator01 {
public static void sum(int left, int right){ // 클래스 메소드
System.out.println(left+right);
}
public static void avg(int left, int right){
System.out.println(left+right/2);
}
}
public class exampleCal02{
public static void main(String[] args){
Calculator01.sum(10,20);
Calculator01.avg(30,40);
}
}
- 인스턴스 메소드는 클래스 멤버에 접근 할 수
있음
- 클래스 메소드는 인스턴스 멤버에 접근 할 수
없음
1번의 경우 인스턴스의 상위가 클래스여서 접근 가능함
2번의 경우 클래스 상위는 없기 때문에 접근 불가능함
[스프링 입문]
package hello.hellospring.domain;
public class Member {
private Long id; //시스템이 저장하는 id
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import java.util.List;
import java.util.Optional;
public interface MemberRepository {
Member save(Member member); //회원이 저장소에 저장
Optional<Member> findById(Long id); //id랑 name을 찾아 올 수있음
Optional<Member> findByName(String name); //Optional: npe방지를 위해 사용
List<Member> findAll(); //지금까지 저장된 회원 리스트 모두를 반환
}
HDMI 규격 통일 -> 서로 다른 본체여도 모니터를 바꿔서 사용할 수 있음