728x90 반응형 DEV/JAVA129 [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] 전화번호북 [ Phone ] Class 코드 public class Phone { private String name; private String tel; private String add; public Phone(String name, String tel, String add) { this.name=name; this.tel=tel; this.add=add; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTel() { return tel; } public String getAdd() { return add; } public void setTel(String.. 2022. 10. 11. [JAVA] 일정관리 프로그램 코드 import java.util.Scanner; class Day{ private String work; //하루의 할 일을 나타내는 문자열 public String getWork() { return work; } public void setWork(String work) { this.work = work; } public void show() { if(work == null) System.out.println("할 일이 없습니다."); else System.out.println(work + "계획이 있습니다."); } } public class MonthSchedule { private Day[] days; // Day 객체 배열 private Scanner sc; private int nDays;.. 2022. 10. 11. [JAVA] 단어사전 코드 import java.util.Scanner; class Dictionary { private static String kor[] = {"사랑", "아기", "돈", "미래" , "희망"}; private static String eng[] = {"Love", "Baby", "Money", "Future", "Hope"}; public String kor2Eng(String word) { for(int i=0; i 2022. 10. 11. [JAVA] 계산기 코드 import java.util.Scanner; class Add{ public int calculate(int a, int b) { return a+b; } } class Sub{ public int calculate(int a, int b) { return a-b; } } class Mul{ public int calculate(int a, int b) { return a*b; } } class Div{ public int calculate(int a, int b) { return a/b; } } public class Calc { public static void main(String[] args) { System.out.println("계산기 프로그램"); System.out.println(".. 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] Array의 역순재배치 1. 숫자1~9를 역순으로 재배치 코드 public class ListEx { public static void main(String[] args) { int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int b[] = new int[a.length]; System.out.print("원 본 : "); for(int i=0; i 2022. 10. 6. [JAVA] Array 객체의 정보 출력 코드 public class AgeEx01 { public static void main(String[] args) { int c=0; String name[] = {"이몽룡", "비", "BTS"}; int age[] = {12, 44, 18}; //이름과 나이를 출력 for(int i=0; i 2022. 10. 6. [Java] 2차원 배열의 생성 및 합과 평균 구하기 public class ArrayCopy04 { public static void main(String[] args) { int arr[][] = {{80,20}, {40,50,10},{100,100,100,100,100}}; int sum=0; int num=0; double avg=0.0; for(int i=0; i 2022. 10. 6. 이전 1 ··· 3 4 5 6 7 8 다음 728x90 반응형