20240819수업
클래스(class), 객체(Object), 인스턴스Instance의 개념
클래스
:객체를 만드는 데 사용하는 설계도,연관되어 있는 변수와 메서드의 집합
객체
소프트웨어 세계에 구현할 대상
클래스의 인스턴스(instance)
객체는 모든 인스턴스를 대표하는 포괄적인 의미
인스턴스
소프트웨어 세계에 구현된 구체적인 실체
객체를 소프트웨어에 실체화한 것
원시타입의 인스턴스를 칭할때는 값이라고 부르기도 한다.
모든 객체는 어떤 클래스의 인스턴스
객체는 ‘실체’, 인스턴스는 ‘관계’에 초점을 맞춘다.
Dog 라는 클래스는 name 이라는 상태(state)값을 갖는다. 또한 eat과 bark라는 행위(behavior)를 갖는다. 여기에 새로운 인스턴스를 만들 수 있는 생성자도 있다. 메인프로그램에서 이 클래스를 인스턴스화하고, name상태값을 "츄" 라고 정해주었다. 이렇게하면 Dog 의 생성자가 입력한 상태값을 활용해 새로운 인스턴스를 생성한다. 이렇게 인스턴스화한 인스턴스의 eat과 bark 메서드를 호출하면 아래와 같이 생성한 인스턴스의 지정 상태값을 활용한 메서드가 실행된다.
다중class
class Pet {
String name;
void eat() {
System.out.println(name + "(이)가 사료를 먹는다");
}
}
약속(pet을 상속받는 클래스의 조건)
- name 필수
- eat()는 공통으로 구현(필수 조건)
- sound()는 공통이지만 내용이 다르게(필수 조건) 구현 >> 코딩없는건 interface로 코딩해서 구현
부모 클래스(super class)
- class 상속(inherit)-모든 클래스 아래로(자식>자식1>자식2) 무제한 상속가능
- 아버지가 완전 재산을 준 것과 같음
- 자바와 c#은 부모클래스가 한 개만 가능▶다중상속이 안됨
interface Soundable{
void sound();
}
- 내용이 달라서 코딩이 없는 메소드
- interface안의 내용은 중괄호를 안한다 ∵자식이 대신 코딩함.
class Dog extends Pet implements Soundable{
@Override
public //interface는 public필요
void sound() {
System.out.println("멍멍");
}
}
class Cat extends Pet implements Soundable{
@Override
public void sound() {
System.out.println("야옹");
}
}
Dog와 Pet을 각각 Pet에 확장시키고 Sound를 구현한다.
- 자바와 C#은 extends 뒤에 한 개의 클래스만 사용가능하다 >> 다중상속 불가능
ex) class Dog extends Pet,Soundable =>문법 오류 - implements는 공통되는 부분이 아니기 때문에 상속이라고 명하기 애매함.
- 다중상속을 구현(implements)할 수 있다.
- C++에서는 ISound | java,C#에서는 -able과 같이 형용사 표현
- @Override단축키:ctrl+shift+s->toString
- public void sound(){}는 약속의 3번조건을 만들어주기 위해 생성
public class TetMaiv_gaekche {
public static void main(String[] args) {
// TODO Auto-generated method stub
Dog chu = new Dog();
chu.name = "츄";
chu.eat();
chu.sound();
Dog ppo = new Dog();
ppo.name = "뽀";
ppo.eat();
ppo.sound();
}
}
'JAVA' 카테고리의 다른 글
[java]정렬하기(Sort), 람다식 (0) | 2024.08.21 |
---|---|
[java] action , abstract, interface (0) | 2024.08.21 |
[java]getter/setter (0) | 2024.08.18 |
[java]Constructor, Override (0) | 2024.08.18 |
[java]ArrayList (자동배열)로 성적 입력 프로그램 만들기 (0) | 2024.08.18 |