객체지향 언어의 4가지 특징
1. 추상화
: 설계를 할 시 데이터나 프로세스를 의미, 수행과정이 비슷한 개념으로 묶어 정의(선언)하는 것
2. 캡슐화 <-정보은닉
: 용법(메서드 시그니처)를 알면 정확히 이용가능하다
: 코드를 재사용할 수 있어서 개발 시간이 단축되고,
기존의 코드들을 연결 할시 오류가 발생한다면, 연결부분을 확인하면 되기 때문에 검사시간이 단축된다.
3. 상속
:부모의 것을 자식이 별도 선언, 구현없이 사용가능하다
4. 다형성
: "객체지향코딩"
: 함수에게 주어가 생긴다 ex) sc.nextInt();
: 동일 함수(메서드) 실행시에도 각각 다른 결과를 볼 수 있다.
객체의 특성
class Student1{
String name;//Student 클래스의 멤버변수, 필드, 속성
int score;
void hello() {//Student 클래스의 메서드, 멤버함수
System.out.println("나"+name+"인데, "+score+"점이야....");
}
}
public class Test01 {
public static void main(String[] args) {
Student1 stu1= new Student1();
stu1.name = "홍길동";
stu1.score=90;
stu1.hello();
Student1 stu2 = new Student1();
stu2.name="";
stu2.score=70;
stu2.hello();
//클래스 -> 객체
//붕어빵틀 -> 붕어빵
//붕어빵틀(클래스) 한개를 통해 여러 붕어빵(객체)를 만들 수 있다.
//Student 클래스 -> stu1객체
//객체를 만드는 행위-> 객체화, 인스턴스화
}
}
생성자
-객체 생성 시 호출되어, 변수들을 초기화 하는 메서드, 클래스와 이름이 동일하다.
[특징]
- 클래스와 이름이 같음
- 리턴 타입, 반환값이 없음(수행값으로 객체가 나오는 것이 명확하므로 생략)
1)기본생성자==디폴트생성자
- 별도로 정의하지 않아도 하나가 존재하는 생성자
- 기본생성자를 정의하는 것도 가능함.
2)매개변수 생성자
- 인자를 받을 수 있는 생성자.
- 매개변수 생성자 생성시 기본 생성자는 사라지므로 필요시 오버로딩을 사용해 새로 정의해야한다.
객체에서의 this키워드
-나의 멤버 변수에 다이렉트로 접근할수 있게 해주는 키워드
class Circle{
int radius;
String name;
Circle(){//생성자 오버로딩
/*
1.
본인생성자
-main클래스에서 Circle(1,"이름없는 원")과 같은 역할
-2번 생성자를 호출 하는 역할로서 this를 사용한다.
-생성자 오버로딩 할시 인자가 많은 생성자만 남김
-this()생성자 이용시 최상단에 작성해야한다
*/
this(1,"이름없는 원");
}
Circle(int radius, String name){
//2.
//this. 나의 멤버변수에 다이렉트로 접근
//인자로 들어온 변수가 멤버변수와 이름이 같기 때문에 this키워드로 구분.
this.radius=radius;
this.name=name;
}
void show() {
System.out.println(name+": "+radius);
}
}
public class Test03 {
public static void main(String[] args) {
Circle c1 = new Circle();
c1.show();
Circle c2 = new Circle(10, "피자");
c2.show();
}
}
'JAVA' 카테고리의 다른 글
day08) getter, setter (0) | 2021.12.31 |
---|---|
day07)static(클래스) 변수, 객체 배열 (0) | 2021.12.30 |
day05)재귀함수 (0) | 2021.12.27 |
day05) 함수(메서드) (0) | 2021.12.27 |
day04) 알고리즘-버블정렬을 이용한 이진탐색 (0) | 2021.12.27 |
댓글