2024/08 16

JAVA , 추상 클래스의 다형성 보기

매개변수를 활용하여 다형성을 보기 메인에서 사용할 메서드정의public static void animalUse(Animal animal) { animal.breath(); animal.sound();}인자로 animal 타입을 받게 된다면 사용할 수 있는 메서드이다. 메인에서의 위 메서드를 사용해보자.Animal cat1 = new Cat();Animal dog1 = new Dog();Cat cat2 = new Cat();animalUse(cat1);animalUse(cat2); //후손도 인자의 animal 타입에 적용 가능. // Animal animal = new Cat();animalUse(dog1);animalUse(new Dog()); 추상클래스의 타입의 배열로 인자 받기public stati..

Developer/JAVA 2024.08.08

JAVA , 추상 클래스

자바의 다형성을 이용한 클래스 다형성을 보다 체계적으로 더 잘 운영하기 위하여 추상이라는 개념이 나왔다.추상이란 규칙만 명시해놓은 것을 말한다.추상이 가능하냐 ? 라고 물어본다면 , 상속과 다형성이 가능하냐 ? 라는 뜻으로 보기도 한다.추상클래스는 타입으로 사용하는 조상의 개념이고 , 직접 생성할 수는 없고 자손을 통한 생성을 하게된다.다형성의 장점1 . 유연성 : 코드가 더 유연해지고 유지보수가 용이하다. 새로운 클래스나 메서드를 추가할 때 기존 코드를 거의 수정하지 않아도 된다.2. 재사용성 : 동일한 인터페이스를 사용하여 다양한 객체를 처리할 수 있어 코드의 재사용성이 높아진다.3. 가독성 : 코드를 읽고 이해하기 쉽게 만들어준다. 같은 메서드 이름을 사용하여 의미를 전달 할 수 있다. 추상 클래스..

Developer/JAVA 2024.08.08

JAVA , 클래스의 다형성, 타입 캐스팅(형변환) , 종단 클래스

상속 클래스의 구성할아버지 : Animal아버지 : Mammal나 : Pet우리가 일반적으로 사용할때 타입과 생성을 동일하게 사용했었다.Mammal ma1 = new Mammal(); //순수 Mammal 타입Pet pe1 = new Pet(); //순수 pet 타입  다형성 법칙1. 후손은 조상의 타입이 될 수 있다 = 상속관계는 같은 타입이 될 수 있다.2. 조상은 후손의 타입이 될 수 없다.타입 변수 = 생성 기본생성자 ;Animal a0 = new Animal(); → Animal 에 정의된것 만큼 접근 가능Animal a1 = new Pet(); → Animal 에 정의된것 만큼 접근 가능 타입으로 정의된 만큼 멤버들에게 접근이 가능함을 알 수 있다.정의된 멤버는 코드의 우측 만큼 접근이 된다...

Developer/JAVA 2024.08.07

JAVA , 상속관계 is-a

클래스를 상속하여 정의해보자  사용할 수 있는 멤버들 확인 가능하다. 추가로 멤버들과 , 생성자를 추가해보자.int turbo ;String option ; SportCar(){ System.out.println("====SportCar 기본 생성자");} SportCar(int turbo , String option){ this.turbo = turbo; this.option = option; System.out.println("====SportCar 현재 값 초기화 생성자");} tostring 도 함께 추가해 보자.@Overridepublic String toString() { // TODO Auto-generated method stub return super.toString() //super..

Developer/JAVA 2024.08.06

JAVA , 클래스간의 관계 : use , has, is

클래스가 클래스를 사용하는 방법은모듈화 되어있는 클래스들을 조립하는 방법을 말한다. new 연산자를 통해 사용하는 방법이 있는데 ,참조 변수를 선언하여 사용하는 방법이 있었고, 메서드의 인자를 통해 사용하는 방법이 있었다.  인자를 통해 전달 받은 것을 사용만을 위한 관계로 , use 의 관계라고 할 수 있다.인스턴스를 정의하여 사용하는 것을 사용자 클래스와 사용되어지는 클래스의 관계를 has 관계라고 한다.하나의 클래스가 다른 클래스를 상속하여 확장한 클래스와 부모 클래스간의 관계를 is 관계, 상속관계라고 한다.-> 아래서 좀 더 자세히 보겠다. 상속의 경우.extends 는 상속한다는 의미로 사용되어지는데 , 아래 표를 보면 extends라는 단어를 사용하는 이유를 할 수있다.부모 Car 클래스를 ..

Developer/JAVA 2024.08.06

JAVA , 예제 : 로또 번호 생성기 , 학생 성적순 출력

로또 번호 생성기문제 요점 : 한클래스 내에서 만든다.로또 번호를 정렬하는 메서드를 따로 만들어서 구현할것.메서드는static 으로 정의 하여 사용. 정렬 메서드는 6개의 정수가 인자로 받아 정렬한다. 즉 , 정렬에 대한 메서드가 배열을 인자로 받아야한다는 의미였다. public static void lottoSort(int [] arr) { for (int i = 0; i arr[j]) { int tem = arr[i]; arr[i] = arr[j]; arr[j] = tem; } } } } public static void lottoSortReverse(int [] arr) { for (int i = 0; i  이 메서드를 하나로 합쳐 표현했다. public stat..

Developer/JAVA 2024.08.06

JAVA , 접근 제어자 : 설정자와 접근자

접근 제어자란 ? 클래스 또는 클래스의 멤버들의 접근 범위를 제한하는  것을 말한다.접근 제어자를 통해 코드의 접근성을 제한하여 캡슐화를 강화하고, 잘못된 사용을 방지한다.클래스와 그 구성요소의 노출 범위를 제어하여 코드의 안정성과 보안성을 높이는 중요한 역할을 한다. public : 프로젝트 전체 내 외부, 불문하고 접근 가능protected : 같은 패키지 내 , 클래스 / 상속관계에 있는 하위 클래스 접근 가능 (주로 상속을 통해 접근 허용)defalut : 접근제어자를 명시하지 않은 경우 , 같은 패키지 내에 있는 클래스만 접근가능private : 같은 클래스 내 접근 , 외부나 하위에서 접근 불가 . 데이터 보호위해 사용  그렇다면 접근이 제한된 경우에 멤버들에 대한 접근은 어떻게 해야할까 ? ..

Developer/JAVA 2024.08.05

JAVA , static 과 instance

static 을 공부하기 전 , 알아보는 자바의 운영체제  코드가 실행되어지면 ,클래스들이 실행되어지면서 ,모든 코드들을 메모리에 올려놓고 JVM이 작동되면서 메모리를 할당하여 사용한다. JVM이 코드 실행시에 반드시 필요한 아이와 필요할 때만 쓰면 되는 것을 구분하여 사용한다.반드시 필요한 아이를 static으로 정의하고 (stack area)필요할 떄만 생성하여 쓰는 아이를 instance 로 정의 하여 (heap area)용도에 맞게 메모리를 적절히 나누어 운영하게 된다.메인이 끝나면 , 프로그램이 종료된다. stack 안에 main 이 먼저 아래에 자리하고 , stack은 자료를 담아두는 공간에 대한 용어이다.메서드의 실행 순서(메서드 콜)를 관리한다.제일 마지막에 들어간 데이터가 제일 먼저 나올..

Developer/JAVA 2024.08.04

JAVA , 초기화 블럭(init) 과 생성자 , this

init(초기화 블럭)초기화 블럭의 역할 멤버변수의 초기화를 할 수 있다. (= 명시적 초기화)초기화가 복잡할 경우, 생성자를 이용할 것. 생성자는 이후에 다뤄보겠다. 자바의 수행 순서 프로그램 로딩 ☞ 클래스 초기화 블럭(stack)  ☞ main 메서드 실행☞ 인스턴스 생성 (new)(heap)  ☞ 인스턴스 초기화 블럭 ☞ 생성자 실행 여기서 봐야할 점은 , main 실행전 클래스 초기화 블럭이 실행되고 , main 실행 후 생성자 실행 전에 인스턴스 초기화 블럭이 실행된다는 것이다.  static int [] arr = new int[10]; //선언만 해놓음. static int count = 100; // 선언과 동시에 명시적으로 초기화 String color ; // 선언만 해놓음. dou..

Developer/JAVA 2024.08.04

JAVA , 팩토리얼 연산 (Factorial)과 static

재귀적 호출이란 메서드가 메서드 내부에서 자신을 호출하는 것을 말한다.Factorial 연산에 주로 이용된다.5! = 5*4*3*2*1 n! = n*(n-1)*(n-1-1)*(n-1-1-1)...*1   public int factorial01(int n) { if (n==1) return 1; System.out.println("n :"+ n); return n*factorial01(n-1); } 메서드 내부에서 자기자신의 메서드를 호출 : 재귀적 호출 (Recursive Call)Ex04_Factorial은 noneStatic / factorial01은 nonStatic의 메서드noneStatic 은 곧 Instance 를 의미.noneStatic 임으로 인스턴스 생성후 사용할 수 있음.   ..

Developer/JAVA 2024.08.03
728x90