본문 바로가기
728x90
반응형

JAVA/개념정리39

[JAVA] 추상(abstract) 클래스와 오버라이딩 추상 클래스와 추상 메소드의 오버라이딩을 이용하면 더욱 효율적인 다형성을 구현할 수 있다 abstract class Figure{ abstract void draw(); } class Triangle2 extends Figure{ @Override void draw() { System.out.println("다형성 : 삼각형을 그린다."); } } class Rectang2 extends Figure{ @Override void draw() { System.out.println("다형성 : 사각형을 그린다."); } } class Oval2 extends Figure{ @Override void draw() { System.out.println("다형성 : 타원형을 그린다."); } } class Pol.. 2022. 10. 13.
[JAVA] 추상화 abstract 추상화는 복잡한 문제들 중에 공통적인 부분을 추출하여 추상 클래스로 제공하고, 상속을 이용하여 나머지 클래스들을 하위 클래스로 제공하는 기법이다. 추상화는 다음과 같이 선언한다. abstract class 클래스명{ abstract void 메소드명(); } 일반적인 클래스와 메소드의 경우는 이렇게 서술했다. class Shape{ void draw() {}; void computerArea(double a, double b){}; } 하지만 추상화에서 이대로 abstract 선언을 하면 에러가 난다. 규칙1. abstract 선언은 선언부만 기술하고 기능 기술은 상속받은 자식 클래스에서 해야한다. {} 부분을 삭제해주면 에러가 나지 않는다. 수정후 abstract class shape{ //abstra.. 2022. 10. 13.
[JAVA] 다형성 class Animal{ void speak() { System.out.println("한 번 짖어봐"); } void cry() { System.out.println("동물들이 소리를 냅니다."); } } class Bird extends Animal{ @Override void cry() { System.out.println("짹짹~~"); } } class Cat extends Animal{ @Override void cry() { System.out.println("야옹"); } } class Dog extends Animal{ @Override void cry() { System.out.println("멍멍"); } } public class MethodOverriding2 { public st.. 2022. 10. 13.
[JAVA] Object 클래스 2022.10.12 - [자바/개념정리] - [JAVA] 상속과 생성자 [JAVA] 상속과 생성자 클래스의 상속에서 생성자는 상속되지 않는다. 다만, 다음과 같은 특성을 가진다 하위 클래스에 생성자가 없거나 묵시적 생성자가 있는 경우, 하위 클래스로부터 객체가 생성될 때 상위 클래스 jjh93.com Object 클래스는 java.lang 패키지에 속해 있는 라이브러리 클래스로 모든 자바 클래스의 최상위 클래스이다. class AAA{ public int a; } public class ObjectMethodTest1 { public static void main(String[] args) { AAA aa = new AAA(); System.out.println(aa); System.out.println.. 2022. 10. 12.
[JAVA] Super Super 첫 번째는 하위 클래스에 의해 가려진 상위 클래스의 멤버 변수나 메소드에 접근할 때 사용 두 번째는 상위 클래스의 명시적 생성자를 호출하기 위해 사용 하위 클래스에 의해 가려진 상위 클래스의 멤버 변수나 메소드에 접근할 때 코드 class D1{ public int x = 1000; public void display() { System.out.println("상위 클래스 D1의 display() 메소드입니다."); } } class D2 extends D1{ public int x = 2000; public void display() { System.out.println("하위 클래스 D2의 display() 메소드입니다."); } public void write() { display(); .. 2022. 10. 12.
[JAVA] 상속과 메소드 오버라이딩(overriding) 생성자 내의 오버로딩과는 다르다. 2022.10.07 - [자바/개념정리] - [JAVA] 생성자 - 묵시적 생성자, 명시적 생성자 [JAVA] 생성자 - 묵시적 생성자, 명시적 생성자 생성자란 생성자는 객체가 만들어 질 때 자동 실행이 되는 것으로, 객체를 생성 할 시 초기화를 담당하는 기능이다. 생성자의 이름이 클래스의 이름과 같아야한다. 묵시적 생성자 묵시적 생성자 jjh93.com 메소드 오버라이딩(overriding) 상속 관계에 있는 클래스들 간에 같은 이름의 메소드를 정의하는 경우이를 오버라이딩(overriding)이라고 한다. 오버라이딩은 상위 클래스의 메소드를 하위 클래스의 메소드로 교체하는 것이다. 상위 클래스의 메소드와 하위 클래스의 메소드가 메소드 이름은 물론 매개변수의 타입과 개수.. 2022. 10. 12.
[JAVA] 상속과 생성자 클래스의 상속에서 생성자는 상속되지 않는다. 다만, 다음과 같은 특성을 가진다 하위 클래스에 생성자가 없거나 묵시적 생성자가 있는 경우, 하위 클래스로부터 객체가 생성될 때 상위 클래스의 묵시적 생성자가 먼저 수행. 하위 클래스에 명시적(매개변수가 있는) 생성자만 있는 경우, 하위 클래스로부터 객체가 생성될 때 상위 클래스의 묵시적 생성자가 먼저 수행. 하위 클래스에 묵시적, 명시적 생성자가 모두 있거나 명시적 생성자만 있는 경우, 상위 클래스에는 생성자가 없거나 반드시 묵시적 생성자가 있어야 한다. 상위 클래스에 명시적 생성자만 있는 경우 오류 발생. 이런 클래스가 존재한다고 했을 때 class DB1{ public double d1; public DB1() { System.out.println("클래.. 2022. 10. 12.
[JAVA] 상속 extends extends ectends는 상속의 대표적인 형태이다. 상위 클래스의 속성과 기능을 하위 클래스에 상속시키고 하위 클래스에는 새로운 기능과 속성을 추가한다. ectends 통해 검색, 확장, 변경이 쉬워진다는 장점이 있다. 형식은 다음과 같다. class 클래스명 extends 상위클래스명{ } Ex01. 코드 class C1{ private static int x = 100; public static int y = x; static int z = x; public static int cc() { return x; } } class C2 extends C1{ public static String x; static int y; } public class InheritanceTest3 { public st.. 2022. 10. 11.
[JAVA] 접근제어자(Access Modifier) 메소드가 헷갈리는 경우 2022.10.04 - [자바/개념정리] - [JAVA] 클래스와 메소드 [JAVA] 클래스와 메소드 자바는 객체 지향 프로그래밍(OOP, Object-Oriented Programming)이다. 자바는 모든 데이터를 객체(object)로 취급한다. 객체(object)는 사물과 같은 것으로 상태(state)와 행동(behavior)을 포함한다. 자바에서.. jjh-blog.tistory.com 메인 메소드의 형태는 다음과 같다. public static void main(String[] args){ //메소드내용 } 접근제어자, access modifier 리턴 타입, return type 메소드명 (매개변수, parameter) 예외목록, exception list { //메소드.. 2022. 10. 7.
[JAVA] 생성자 - 예약어 this 생성자의 기본이 아직 이해가 가지 않는다면 2022.10.07 - [자바/개념정리] - [JAVA] 생성자 - 묵시적 생성자, 명시적 생성자 [JAVA] 생성자 생성자란 생성자는 객체가 만들어 질 때 자동 실행이 되는 것으로, 생성자의 이름이 클래스의 이름과 같아야한다. 묵시적 생성자 코드 package ex02; class Cons1{ public int num; public Cons1(){ //묵시적 생성 jjh-blog.tistory.com this 자바에서 this는 '객체, 자기 자신'이라는 의미이다. 1. class의 속성과 생성자/메소드의 매개변수 이름이 같은 경우 코드 class Box{ int width; int height; int depth; public Box(int width, i.. 2022. 10. 7.
[JAVA] 생성자 - 묵시적 생성자, 명시적 생성자 생성자란 생성자는 객체가 만들어 질 때 자동 실행이 되는 것으로, 객체를 생성 할 시 초기화를 담당하는 기능이다. 생성자의 이름이 클래스의 이름과 같아야한다. 묵시적 생성자 묵시적 생성자는 매개변수가 없는 생성자로, 생성자가 지정되지 않는 경우 자동생성된다. 코드 package ex02; class Cons1{ public int num; public Cons1(){ //묵시적 생성자 System.out.println("안녕하세요."); } public void aa(){ //메소드 System.out.println("반갑습니다."); } } public class ConsTest1 { public static void main(String[] args) { Cons1 con1 = new Cons1();.. 2022. 10. 7.
[Java] System.arraycopy 배열을 복사하기 위해서는 어떻게 해야 할까. int oldIntArray[] = {1,2,3,4}; int newIntArray[] = new int[6]; newIntArray에 oldIntArray를 복사해보자 For문을 이용한 복사 코드 for(int i=0; i 2022. 10. 6.
[JAVA] Array의 활용 최대값과 최소값 구하기 public class ArrayTest2 { public static void main(String[] args) { int score[] = {55, 45, 34, 3, 4, 23, 45, 34, 56}; //최대값 구하기 int max = score[0]; for(int i=1; i max) max = score[i]; } System.out.println("최대 값은 : " + max); //최소값 구하기 int min = score[0]; for(int i=1; i 2022. 10. 5.
[JAVA] Array 배열이란, 같은 형의 데이터를 하나의 자료구조에 저장할 수 있게 만든 것이다. 같은 형의 데이터를 여러 개 사용할 때 많은 변수를 사용하기 보다는 배열을 사용하는 것이 효율적이다. 배열은 기본 자료형이 아니라 참조 자료형이다 배열 각각의 요소는 기본 자료형, 참조 자료형 모두 가능하다 배열의 초기화 배열의 초기화란, 처음 생성된 배열에 데이터를 저장하는 과정이다. 변수와 달리 배열은 초기화 하지 않아도 사용이 가능하다 (오류 발생 안함) 배열이 초기화 되지 않을 경우에는 묵시적인 값으로 자동 설정된다. public static void main(String[] args) { int id[] = new int[5]; System.out.println(id[0]); System.out.println(id[1.. 2022. 10. 5.
[JAVA] 클래스와 메소드 자바는 객체 지향 프로그래밍(OOP, Object-Oriented Programming)이다. 자바는 모든 데이터를 객체(object)로 취급한다. 객체(object)는 사물과 같은 것으로 상태(state)와 행동(behavior)을 포함한다. 자바에서는 객체를 클래스(class)로 나타낸다. 클래스 클래스는 자바의 가장 작은 단위로, 객체의 상태를 나타낸다. 객체는 상태(state)와 행동(behavior)을 포함한다고 했는데 클래스에서는 이 상태를 필드(field)로, 행동을 메소드(method)로 구성한다. 클래스의 기본 형태는 다음과 같다. public class DoorLockManager{ //중간내용 } 접근제어자, access modifier class 클래스명{ //중간내용 } 메소드 클.. 2022. 10. 4.
[JAVA] IF문의 활용 단일 IF문 01. 숫자를 입력할 때, 음수이면 문구를 출력하고 아니면 출력하지 않음. import java.util.Scanner; public class SimpleFTest01 { public static void main(String[] args) { Scanner stdin = new Scanner(System.in); System.out.print("한 개의 숫자를 입력 : "); int count = stdin.nextInt(); if(count < 0) { System.out.println(count + "은(는) 음수입니다."); } } } 결과1 : 5를 입력했을 때 결과2 : 음수를 입력했을 때 다중 IF문 01. 성적에 따라서 학점을 출력 import java.util.Scanner.. 2022. 9. 16.
[JAVA] 연산자(operator) 연산자와 피연산자 연산자(operator) : 연산을 수행하는 기호 피연산자(operand)는 연산의 대상을 말한다. 상수, 변수, 리터럴, 수식. 종류 연산자 산술 연산자 +, -, *, /, %, 비교 연산자 >, 비교 연산자 → >, 2022. 9. 16.
[JAVA] 출력 지시자 printf() 출력을 하기 위해서는 print()와 println()을 사용할 수 있다. print() : 줄바꿈을 안함 println() : 출력 후에 줄바꿈을 함 그러나 println()은 변수의 값을 그대로 출력하므로, 값을 변환하지 않고는 다른 형식으로 출력할 수 없다. 다른 형식으로 출력하고 싶을때는 printf()를 사용하면 좋다. printf()는 지시자(specifier)를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력하는 기능을 가지고 있다. printf() public class PrintfEX { public static void main(String[] args) { int year = 2022; int age = 30; System.out.printf("age:%d, year:%d", ag.. 2022. 9. 16.
728x90
반응형