일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Java#JAVA#매개변수
- 국비지원#국비교육
- IntelliJ#인텔리제이#인텔리#단축키
- 국비지원JAVA
- #
- java
- Java#정처기#비트연산자#정보처리기사
- 자바#Java#배열예시#연습#기초다지기
- 프로그래밍
- html#HTML#프론트엔드#개발자#코딩#국비지원#국비교육#국비지원프론트엔드#국비지원HTML#국비지원html#국비프론트엔드
- tibero#티베로#이중화#failvover
- 국비지원#국비교육#국비지원자바#국비교육자바#css#HTML#JAVA
- 항해플러스#항해#항해플러스3기#회고
- db#데이터베이스#오라클#sql
- 항해99 #항해플러스 #주니어개발자 #주니어개발자역량강화 #주니어개발자멘토링 #개발자사이드프로젝트 #코딩부트캠프 #코딩부트캠프후기
- 개발자#it도서#도메인#DDD#ddd
- Resource #
- 국비지원JAVA#국비지원자바#프로그랭#JSP#국비지원JSP#국비교육JSP#웹개발자#코딩
- Spring#spring#스프링#스프링프레임워크#스프링자동주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- 개발자도서#개발자책#도메인#DDD#도메인주도개발시작하기#개발스터디#
- 자바
- Java#java#자바#다오#디티오#브이오#dao#dto#vo
- Spring#spring#스프링#스프링프레임워크#스프링의존성주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- #java#JAVA#프로그래밍#웹개발자
- Java#컴파일러#자바컴파일러#
- 쿼리스트링#쿼리문자열#바인딩
- Java#java#메모리영역#클래스로더#가비지컬렉터
- 국비지원자바#국비교육자바#국비지원java#국비교육java#자바스크립트#프론트엔드
- 국비지원JAVA#국비교육JAVA#국비지원자바#국비교육자바#JSP#SERVLET#서블릿#
- spring#Spring#RequestBody#ResponseBody
- Today
- Total
개린이 개발노트
국비지원 JAVA(자바) 프로그래밍 웹개발자 ( 상속,다형성,추상화) 본문
다형성 기본개념
다형성 기본형태
다형성 게임 캐릭터 기본 공격
접근제한자
package TV만들기;
public class TV extends PrototypeTV {
String name;
boolean isInternet;
public TV() {
super();
name= "LG TV";
isInternet=false;
}
TV(String name){
super(false,20,15);
this.name = name;
isInternet = false;
}
void setPower(boolean isPower) {
this.isPower = isPower;
}
public void setChannel(int cnl) {
if(cnl>0 && 2000<=cnl) {
channel=cnl;
}else {
System.out.println("채널이 없습니다");
}
}
public void setChannel(int cnl, boolean isInternet) {
if(isInternet) {
System.out.println("인터넷 연결 성공");
this.isInternet=true;
}else {
this.isInternet=false;
if(cnl>0 && cnl<2000) {
channel = cnl;
System.out.println("채널이"+channel+"로 변경");
} else {
System.out.println("채널이 없습니다.");
}
}
}
public void setVolume(int vol) {
if (vol>=0 && vol<=100) {
volume = vol;
}else {
System.out.println("볼륨 범위 벗어남");
}
}
public void viewTV() {
System.out.println("이름:"+name);
System.out.println("전원:"+isPower);
System.out.println("채널:"+channel);
System.out.println("볼륨:"+volume);
System.out.println("인터넷연결:"+isInternet);
}
}
package TV만들기;
public class PrototypeTV {
boolean isPower;// 전원 on off
int channel; // 채널
int volume; // 볼륨
public PrototypeTV() {
isPower = false;
channel = 10;
volume = 10;
}
public PrototypeTV(boolean isPower, int channel, int volume) {
this.isPower = isPower;
this.channel = channel;
this.volume = volume;
}
public void setChannel(int cnl) {
if (cnl>=0 &&cnl<1000) {
channel = cnl;
} else {
System.out.println("채널이 없습니다.");
}
}
}
TV만들기 업그레이드 버전
Main문
package TV만들기;
public class Main {
public static void main(String[] args) {
/** ==초기상태== **/
//기본 생성자
TV lgTV = new TV();
//viewTv만 호출 해서 정보 확인해보기
lgTV.viewTv(); //기본 상태 값 표시
/** ==값 첫 번째 변경 == **/
//전원켜기
lgTV.setPower(true);
lgTV.setChannel(500);
System.out.println("--1--"); //구별하기 위해
lgTV.viewTv(); //파워와 채널 변경후 다시 viewTv 불러왔을 때 변경 된 값 표시
/** ==값 두 번째 변경 == **/
//오버로딩 때문에 묶어둔것
System.out.println("--2--"); //구별하기 위해
lgTV.setChannel(222, true);
lgTV.viewTv();
lgTV.setChannel(999, false);
lgTV.viewTv();
lgTV.setVolume(50);
lgTV.viewTv();
}
}
public class PrototypeTV
package TV만들기;
public class PrototypeTV {
boolean isPower;// 전원 on off
int channel; // 채널
int volume; // 볼륨
public PrototypeTV() {
isPower = false;
channel = 10;
volume = 10;
}
public PrototypeTV(boolean isPower, int channel, int volume) {
this.isPower = isPower;
this.channel = channel;
this.volume = volume;
}
public void setChannel(int cnl) {
if (cnl>=0 &&cnl<1000) {
channel = cnl;
} else {
System.out.println("채널이 없습니다.");
}
}
}
public class TV extends PrototypeTV
package TV만들기;
//자식 클래스
public class TV extends PrototypeTV { //PrototypeTv 상속 받기
String name;
boolean isInternet;
//기본 생성자
TV () {
super();
name = "LG TV";
isInternet = false;
}
//name을 생성 받아서 만든 생성자 (매개변수)
TV (String name) {
super(false, 20, 15);
this.name = name;
isInternet = false;
}
//메서드 생성 (매개변수)
void setPower(boolean isPower) { //isPower를 전달 받게끔
this.isPower = isPower;
}
//오버라이딩 (채널 관련) (매개변수)
public void setChannel(int cnl) {
if(cnl >= 0 && cnl < 2000) {
channel = cnl;
} else {
System.out.println("채널이 없습니다.");
}
}
//오버로딩 (인터넷 관련) (매개변수로 사용되는 것)
public void setChannel(int cnl, boolean isInternet) {
if(isInternet) {
System.out.println("인터넷 연결 성공");
this.isInternet = true;
} else {
this.isInternet = false;
//채널 설정
if(cnl >= 0 && cnl < 2000) {
channel = cnl;
System.out.println("채널이" + channel + "로 변경");
} else {
System.out.println("채널이 없습니다.");
}
}
}
//불륨 설정 (매개변수)
public void setVolume(int vol) {
if(vol>=0 && vol<=100) {
volume = vol;
} else {
System.out.println("볼륨 범위 벗어남");
}
}
//정보 표시
public void viewTv() {
System.out.println("이름 :" + name);
System.out.println("전원 :" + isPower); //보안할시 삼항연산자 사용 <--조건식? 참 : 거짓
System.out.println("채널 :" + channel);
System.out.println("볼륨 :" + volume);
System.out.println("인터넷연결 :" + isInternet);
}
}
추상클래스
→ 반드시 구현해라
부모클래스-> 자식클래스
abstract - 추상화만드는 작업
추상클래스, 향상된for문
package 추상클래스;
public abstract class Shape {
String type;
public Shape(String type) {
this.type = type;
}
abstract double area();
abstract double length();
}
package 추상클래스;
public class Circle extends Shape{
int r; //반지름
public Circle( int r) {
super("원");
this.r = r;
}
@Override //컴퓨터에게 이건 오버라이딩이라 안내하는 용도
double area() {
return r*r*Math.PI;
}
@Override
double length() {
return 2*r*Math.PI;
}
@Override
public String toString() {
return "Shap [type =" + type + ", r="+r+"]";
}
}
package 추상클래스;
public class Rectangle extends Shape {
int width, height;
public Rectangle(int width, int height) {
super("사각형");
this.width = width;
this.height = height;
}
//상속 받은 수상메서드 생성
@Override
double area() {
return width * height;
}
@Override
double length() {
return 2 * (width + height);
}
@Override
public String toString() {
return "Shape [type=" + type + ", width=" + width + ", height=" + height + "]";
}
}
package 추상클래스;
public class ShapeEx {
public static void main(String[] args) {
Shape[] shapes = new Shape[2];
shapes[0]=new Circle(10);
shapes[1]=new Rectangle(5,5);
for(Shape s : shapes) {
System.out.println(s);
System.out.println("넓이 : "+s.area()+" 둘레 "+s.length());
}
}
}
println(s); 만 해도 바로 출력되는 이유
fianl 상수선언
final public class Aclass //final 때문에 상속 안되고 독립적으로 쓰이는 클래스가 됨
final void aa() { } 메서드 같은경우 오버로딩이나 오버라이딩이 안됨 (못바꿈)
문제 Caluloator 클래스를 상속하는 UpgradeCaluloator를 생성
빼기 계산하는 minus 메서드를 추가
main
따라치기 해보기
package 문제02;
import org.omg.CORBA.PUBLIC_MEMBER;
public class Calc {
// 홀수인지 짝수인지 결과값을 true/false로 리턴해주는 isOdd메서드
// 배열을 전달받아 값듫의 평균을 구해서 리턴해주는 avg 메서드
public boolean isOdd(int num) {
if (num%2==1) {
return true;
}else {
return false; }
}
public double avg(int[] arr) {
int sum=0;
for(int a: arr) {
sum=sum+a;
}
return (double) sum/arr.length;
}
}
package 문제02;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] arr= {50,30,100,20,40,70};
int num;
Scanner sc = new Scanner(System.in);
System.out.println("정수입력:");
num=sc.nextInt();
Calc calc =new Calc();
// num이 홀수인지 짝수인지 홀수면 홀수, 짝수면 짝수로 나오게끔
if (calc.isOdd(num)) {
System.out.println("입력받은 값은 홀수");
}else {
System.out.println("입력받은 값은 짝수");
}
//arr배열의 평균이 계산된 결과가 출력되게끔
System.out.println("평균:"+calc.avg(arr));
}
}
학생 관리 프로그램3명
이름,국어,영어,수학,합계,평균,등수 ]
name kor eng math sum avg rank
등수는 평균을 기준으로 해서 1등,2등,3등 이런식으로 처리함
sum avg
이름국어영어수학-> 입력받음
합계/평균 메서드 실행 -> sum,avg 저장
showinfo()
<학생정보 출력>
이름 국어 영어 수학 합계 평균 등수
==============================
홍길동 100 80 90 270 90
홍길동
홍길동
main문
====학생정보입력====
1번쨰학생입력:
1번쨰학생국어:
1번째학생영어
1번째학생수학:
====1번쨰학생 입력완료===
2번쨰학생입력:
2번쨰학생국어:
2번째학생영어
2번째학생수학:
====2번쨰학생 입력완료===
합계 계산 처리
평균 계산 처리
등수처리->main에서 작업
package 문제1128;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Student[] student = new Student[3];
String name;
int kor, eng, math, i;
Scanner sc = new Scanner(System.in);
System.out.println("===학생 정보 입력===");
for (i = 0; i < student.length; i++) {
System.out.print(i + 1 + "번째 학생 이름 : ");
name = sc.next();
System.out.print(i + 1 + "번째 학생 국어 : ");
kor = sc.nextInt();
System.out.print(i + 1 + "번째 학생 영어 : ");
eng = sc.nextInt();
System.out.print(i + 1 + "번째 학생 수학 : ");
math = sc.nextInt();
System.out.println("--" + (i + 1) + "번째 학생 입력 완료--");
student[i] = new Student(name, kor, eng, math);
}
for (i = 1; i < student.length; i++) {
student[i].sum();
student[i].avg();
}
System.out.println("이름 국어 영어 수학 총합 평균 순위");
for (i = 0; i < student.length; i++) {
for (int j = 0; j < student.length; j++) {
if (student[i].avg < student[j].avg) {
student[i].rank++;
}
}
}
for (i = 0; i < student.length; i++) {
student[i].showInfo();
}
}
}
package 문제1128;
public class Student {
String name;
int kor;
int eng;
int math;
int sum;
int avg;
int rank;
public Student(String name, int kor, int eng, int math) {
this.name = name;
this.kor = kor;
this.eng = eng;
this.math = math;
this.sum = 0;
this.rank = 1;
}
public void sum() {
sum = kor+eng+math;
}
public void avg() {
avg = sum/3;
}
public void showInfo() {
System.out.println(name+" "+kor+" "+eng+" "+math+" "+sum+" "+avg+" "+rank);
}
}
i=0 인데 i=1로 오타남!!
인터페이스 정형화 틀이 됨
다중 상속
추상 메서드
상수
default 메서드
static 메서드
[public] interface 인터페이스명 {
int a =100; final로 인해 상수처리
[public static final] 자료형 상수명 =값
int add(); -> 추상메서드
[public abstract] 리턴타입 추상메서드이름(매개변수);
[public] default 리턴타입 메서드이름 ( 매개변수) {
기능구현
}
public] static 리턴타입 메서드이름 ( 매개변수) {
기능구현
}
복합기 만들기 - (프린트
CLASS에 인터페이스 구현 완료!
익명 구현 객체 // 1회성으로 만들어서 씀 메인내부에서 다 처리됨
익명 객체
세미콜론 위치 중요!!!
'국비지원(국비교육) 웹 개발자 과정' 카테고리의 다른 글
국비지원 JAVA(자바) 프로그래밍(전화번호,이메일 정규식,정규표현식,ArrayList,LinkedList) (1) | 2022.12.01 |
---|---|
국비지원 JAVA(자바) 프로그래밍(인터페이스, 다형성, 내부클래스, 여러가지 예외처리방법, 정규식, 정규표현식, 자바API) (0) | 2022.11.30 |
국비지원 JAVA(자바) 프로그래밍 웹개발자 (싱글톤, 캡슐화, 상속화, 오버라이딩, 다형성 까지) (0) | 2022.11.28 |
국비지원 JAVA(자바) 프로그래밍 웹개발자 (계산기 만들기, 오버로딩 ,접근제한자,캡슐화,에어컨 만들기) (0) | 2022.11.25 |
국비지원 JAVA(자바) 프로그래밍 웹개발자 (배열,난수 출력, 로또 번호 만들기,클래스, 인스턴스, 객체 ); (1) | 2022.11.24 |