JAVA 객체정의, 가변배열

강정우·2022년 7월 13일
0

JAVA

목록 보기
13/31
post-thumbnail

객체

  • 클래스라는 것을 생성하면 바로 객체를 만드는 것이 아닌! 주소값을 지정한다.
Car myCar   =    new Car();
주소값을지정       실제 필드, 메소드를 가짐.

1. 필드

  • 클래스의 성질 및 특성을 나타낸다. 이때 접근 제한자로 필드에 직접접근을 막을 수 있는데 총 4가지의 종류가 있다.
    1.private - class안에서만 접근 가능
    2.default - 같은 패키지 않에서만 접근 가능
    3.protected - 같은 패키지 않에서만 접근가능, 예외로 상속받거나 상속하는 경우 상속 클래스에서 사용가능
    4.public - 같은 프로젝트 안이라면 언제든지 사용가능
  • 필드의 선언은 private으로 선언하며(보안성) 변수의 특징에 맞게 datatype을 선언한다.

2. 메소드

  • 클래스의 동작을 나타내는 요소.
  • 생성자, 반환값이 없는 메소드, 반환값이 있는 메소드등 다양한 메소드를 갖고있다.
  • 메소드를 만들 때 클래스 안에 있는 필드를 그대로 가져오고 싶을 땐 this.를 사용한다.
  • 이는 python의 self 와 포지션이 비슷하다고 생각하면 편하다.

3. 생성자

  1. class이름과 동일하다.
  2. return type이 존재하지 않는다.
  3. 객체를 생성할 때만 호출이 된다.
  4. 단 1번만 생성된다. 만일 다시 호출한다면 새로운 객체가 생성된다.
  • 앞서 말했듯 class의 field값에 바로 접근한다면 보안성과 개발자가 의도한바와 바르게 작동할 수 있으므로 메서드를 이용해 접근 하도록 한다.

    기본 생성자

  • 이때 생성자와 관한 메서드는 getter setter method가 있다.
  • getter setter method는 필드값에 쉽게 접근할 수 있는 메서드들을 단박에 만들어준다. 만드는 법은 alt+shift+s로
  • 쉽게 한방에 여러 필드값에 해당하는 getter setter method를 만들 수 있다.
  • 생성자는 객체를 생성하는 녀석이다.
  • 생성자를 따로 정의하지 않으면 기본 생성자가 사용된다.
  • 기본 생성자는 IDE인 이클립스에서 기본적으로 제공한다.
예를 들어 자동차 class의 기본 생성자.
Car(){}
  • 위의 생성자를 다른 클래스에서 쓰려면
public class Main{
	public static void main(String[] args){
    	Car myCar = new Car();
    }
}
  • 생성자를 생성 후 data를 setter method를 이용하여 집어 넣어준다.

    사용자 정의 생성자

  • VO(value object) 또는 DTO(data transfer object)라고 부른다.
	public Student(String name, int stuId, char gen, String phone, String grade) {
		super();
		this.name = name;
		this.stuId = stuId;
		this.gen = gen;
		this.phone = phone;
		this.grade = grade;
	}
  • 생성자는 constuctor이라고 부르며 사용자 정의 생성자 또한 alt+shift+s로 쉽고 빠르게 만들 수 있다.

  • 위와 같이 한큐에 필드값을 입력하여 객체를 생성할 수 있도록 도와준다.

    overide, toString()

	@Override
	public String toString() {
		return "Student [name=" + name + ", stuId=" + stuId + ", gen=" + gen + ", phone=" + phone + ", grade=" + grade
				+ "]";
	}
  • overide 말 그대로 덮어쓰기이며 원래 toString은 주소갚을 나타내 주는 함수이지만 필드값을 전부 보여줄 수 있도록 덮씌운 것이다.
  • toString 함수 또한 alt+shift+s에서 찾아볼 수 있다.

4. 가변배열

  • ArrayList : 동일한 datatype을 순차적으로 나열하며 저장 단, size의 가변성이 있다.
ArrayList<datatype> 변수명 = new ArrayList<datatype>();
  • 위의 보라색 부분의 datatype은 말 그래도 reference의 datatype 즉, 객체가 들어갈 수 있다.
  • data 추가

  • add 함수로 추가할 수 있다 다만, 그냥 add함수만 쓰면 python의 append 함수와 같다. 제일 마지막에 추가하게 된다.
  • 중간에 값을 삽입하고 싶다면 add(index, value)를 넣어주면 중간에 값이 있더라고 그 값이 update 되는 것이 아닌 한칸씩 뒤로 밀고 그 자리에 값이 비집고 들어간다.

    data 삭제

  • remove함수를 쓰고 removeAll을 쓰게 되면 ArrayList가 초기화가 된다.

    가변 배열과 일반 배열의 차이점

  • length 대신 size를 쓴다.
  • 가변리스트명.get(인덱스) 를 사용하여 data를 뽑는다.
  • 이때 전부 호출하고 싶다면 for문을 쓰면 된다.
for(int i= 0; i<students.size();i++) {
       System.out.println(students.get(i));
       }
  • 또는 Arrays 부분에 가변배열 이름을 써도 가능하다
System.out.println(students.toString());

5. 실습(생성자+가변배열)

  • 다음 포스트 참조
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글