목록Java (16)
Paper.Yellow
추상 클래스(abstract class)는 완전하게 구현되어 있지 않은 메소드 = 미완성 설계도와 같다. 메서드는 같지만 행위가 다를 때 사용한다. 상속 받는 클래스에 공격이란 추상화 메소드가 생기면 상속을 받는 캐릭터1과 캐릭터2에는 공격이란 메서드를 생성해야하는 강제성이 생긴다. 툴을 이용해서 간단하게 메서드를 생성할 수 있다. 공통적인 메서드가 있을때 아래와 같이 생성할 수도 있다. sound(); = 메소드는 같지만 행위가 달라서 추상화하였고, move()는 공통 메서드가 상속하는 클래스에 속해있다. 왜 추상화로 만들어야 할까. 구체적인 것에 접근/의존하고 있으면 새로운 객체가 생성이 되었을때 고쳐야할 코드가 많아진다. 예를 들어 예제1) "요리사"가 "음식"을 만들었다. 예제2) 철수가 라면을 ..
class 햄버그 { String name; } public class ConEx03 { public static void main(String[] args) { 햄버그 h = new 햄버그(); } } 햄버그라는 클래스를 new 해서 호출할때 보이지는 않지만 자동적으로 몸체 부분이 비어있는 생성자가 만들어진다. 이를 디폴트 생성자 라고 한다. class 햄버그 { String name; public 햄버그() { //생략되어 있던 메서드 } } public class ConEx03 { public static void main(String[] args) { 햄버그 h = new 햄버그(); } } 생성자가 개별적으로 하나 이상 선언되어 있으면 디폴트 생성자가 자동으로 추가되지 않아서 메서드 몸체가 비어..
이전 실습 코드에서 부모 클래스를 하나 생성한 후 임의 값을 넣은 메소드를 넣은 후, 자식 클래스에 return hp; 이런식으로 하면 가능하다는 식의 힌트를 먼저 받았다. 위 중복 메소드들을 하나로 합쳐야 한다는건데 말로 풀면 attack(u1의 힘, u2의 체력){ u2의 체력에서 u1의 힘을 뺀 값 최종 값을 출력 } 배운걸 써먹자는 마음으로 1-1에서 1-2로 고쳤었다. 부모의 이름을 클래스명으로 붙이면 Unit 공간을 가르키기 때문에 오류가 나는거 같아서 중간에 다시 1-1로 고쳤다. - 최종 코드에서 바꿔봤는데 두개 다 상관 없더라... 힌트를 얻은 check와 더불어서 공격력을 대신할 att 메소드를 하나 더 생성했다. 이제 u2.check = u2.check - u1.att 를 구현하면 되..
생성자(constructor) : 클래스 안에 선언되어서 객체가 생성될 때에 필드에 초기갑을 제공하고 필요한 초기화 절차를 실행하는 것이다. static void hello() { System.out.println("hello()"); } static void hello(int num) { System.out.println("hello(int num)"); } static void hello(int sum, String str) { System.out.println("hello(int sum, String str)"); } static void hello( String str, int sum) { System.out.println("hello( String str, int sum)" ); } public..
bubble sort 버블 정렬 서로 인정합 두 원소를 검사하여 정렬하는 알고리즘 인접한 2개의 레코드를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환한다. 이론적인 정리가 아닌 익혀보자. 우리에게 주어진 5개의 숫자가 담긴 꾸러미가 있다. [ 40, 10, 5, 30, 8 ] 눈으로 보면 바로 5 < 8 < 10 < 30 < 40 순서대로 정리할 수 있지만 컴퓨터는 그렇게 할 수 없다. 그리고 숫자의 단위가 크거나, 종류가 많아진다면 사람도 쉽게 정리를 할 수 없다. 40, 10, 5, 30, 8 첫번째 두번째 세번째 첫번째 두번째 10,40,5,30,8 5,10,30,8,40 5,8,10,30,40 두번째 세번째 10,5,40,30,8 5,10,30,8,40 5,8,10,30,40 세번째 네번..
1. 3개의 숫자를 받아서 크기 순으로 정렬하는 프로그램 if - else 를 사용한다. public static void main(String[] args) { //받은 숫자 작은 순서대로 정렬 int a ; int b ; int c ; Scanner sc = new Scanner(System.in); System.out.println("첫번째숫자."); a=(sc.nextInt()); System.out.println("두번째숫자."); b=(sc.nextInt()); System.out.println("세번째숫자."); c=(sc.nextInt()); if (a > c && b > c) { System.out.println(c); if (a > b) { System.out.println(b); Sy..
1900년 1월 1일 일요일 년/월/일 날짜를 입력 받아 무슨 요일인지 계산하기 1) 1900년을 기준으로 주어진 연도까지의 일수 - 곱하기 365 2) 윤달이 있는 변수가 있기 때문에 4년 주기로 1일 더해주기 3) 월에 해당하는 일수 더하기 4) 일에 해당하는 일수 더하기 5) 총 일수에서 나누기 7을 한 나머지 값에 따라 요일 계산하기 int year,month,day,x,b; year = 2022; month =7; day=29; //x는 년에 대한 일수 = 365일 = 각 월의 일수를 더한 값 //b는 총 합산될 일수 int로 년 / 월 / 일 / 1년의 총 일수 / 합산될 일수의 칸을 정했다. int m1=31; int m2=28; int m3=31; int m4=30; int m5=31; i..