본문 바로가기

스파르타코딩클럽(내일배움캠프)

스파르타 코딩 클럽 3주차 1일

728x90

Array와 list , ArrayList 차이

Array : 데이터 조회 : 빠름

           삽입,삭제 : 느림

인덱스가 존재, 정해진 공간에 할당

 

List : 데이터 조회 : 느림

        삽입, 삭제 : 빠름

인덱스가없음, 요소가 추가 될때 마다 공간 할당

 

ArrayList는 Array와 List장점을 합친것이다. 

index가 있지만, 크기를 동적으로 할당 가능

 

ArrayList를 좀더 범용적으로 할당 방법

List list = new ArrayList();

-> 도형 list = new 정사각형();

 

ArrayList list = new ArrayList();

-> 정사각형 list = new 정사각형();

 

클래스는 하나당 원래는 파일하나를 생성하는것이 원칙이다.

 

클래스 상속

class Animal {
    String name;

    public void cry() {
        System.out.println(name + " is crying.");
    }
}

class Dog extends Animal {

    Dog(String name) {
        this.name = name;
    }

    public void swim() {
        System.out.println(name + " is swimming!");
    }
}

public class main {
    public static void main(String[] args) {
        Dog dog = new Dog("코코");
        dog.cry();
        dog.swim();

        Animal dog2 = dog;
        dog2.cry();
//        dog2.swim(); // compile error
    }
}

클래스 오버로딩 과 오버라이딩

오버로딩 : 같은 메소드의 매개변수 및 자료형을 재정의 하는것.

오버라이딩 : 부모클래스에 있는 매소드를 자식클래스에 있는 매소드로 대체해서 재정의 하는것.

 

오버로딩

 

오버로딩이 아닌경우

반환타입이 다르지만 매개변수의 자료형과 갯수가 같음

    int add(int x, int y, int z) {
        int result = x + y + z;
        return result;
    }

    long add(int a, int b, int c) {
        long result = a + b + c;
        return result;
    }
// 반환타입은 다르지만 매개변수의 자료형과 개수는 같기에 오버로딩이 아닙니다.

오버로딩

public class main {
    public static void main(String[] args) {
    }

    int add(int x, int y, int z) {
        int result = x + y + z;
        return result;
    }

    long add(int a, int b, long c) {
        long result = a + b + c;
        return result;
    }
}

오버라이딩

 

class Animal {
    String name;
    String color;

    public void cry() {
        System.out.println(name + " is crying.");
    }
}

class Dog extends Animal {

    Dog(String name) {
        this.name = name;
    }

    public void cry() {
        System.out.println(name + " is barking!");
    }
}

public class main {
    public static void main(String[] args) {
        Animal dog = new Dog("코코");
        dog.cry();
    }
}
      접근 제어자 (access modifier)
      접근 제어자는 멤버 변수/함수 혹은 클래스에 사용되며 외부에서의 접근을 제한하는 역할을 합니다.

 

private → default → protected → public

 

      private : 같은 클래스 내에서만 접근이 가능합니다
      protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능합니다
      public : 접근 제한이 전혀 없습니다.
        default(nothing) : 같은 패키지 내에서만 접근이 가능합니다.
package pkg;

public class ModifierTest {
    private  void messageInside()
    {
        System.out.println("this is private");
    }
    public void messageOutside()
    {
        System.out.println("this is public");
        messageInside();
    }
    protected void messageProtected()
    {
        System.out.println("this is protected");
    }
}
import pkg.ModifierTest;

class child extends ModifierTest
{
    void callProtected()
    {
        System.out.println("call protected");
        super.messageProtected(); // super란 부모클래스를 가르친다.

    }
}

public class main {
    public static void main(String[] args) {
//        ModifierTest modifierTest = new ModifierTest();
//        modifierTest.messageOutside();
        child ch = new child();
        ch.callProtected();
    }
}

 

728x90