일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- IntelliJ#인텔리제이#인텔리#단축키
- 자바#Java#배열예시#연습#기초다지기
- java
- #
- Java#컴파일러#자바컴파일러#
- 개발자#it도서#도메인#DDD#ddd
- 국비지원#국비교육#국비지원자바#국비교육자바#css#HTML#JAVA
- 국비지원JAVA#국비지원자바#프로그랭#JSP#국비지원JSP#국비교육JSP#웹개발자#코딩
- Spring#spring#스프링#스프링프레임워크#스프링자동주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- Java#java#자바#다오#디티오#브이오#dao#dto#vo
- #java#JAVA#프로그래밍#웹개발자
- 항해99 #항해플러스 #주니어개발자 #주니어개발자역량강화 #주니어개발자멘토링 #개발자사이드프로젝트 #코딩부트캠프 #코딩부트캠프후기
- 국비지원JAVA
- 개발자도서#개발자책#도메인#DDD#도메인주도개발시작하기#개발스터디#
- db#데이터베이스#오라클#sql
- 항해플러스#항해#항해플러스3기#회고
- html#HTML#프론트엔드#개발자#코딩#국비지원#국비교육#국비지원프론트엔드#국비지원HTML#국비지원html#국비프론트엔드
- 국비지원JAVA#국비교육JAVA#국비지원자바#국비교육자바#JSP#SERVLET#서블릿#
- Resource #
- 국비지원자바#국비교육자바#국비지원java#국비교육java#자바스크립트#프론트엔드
- Java#java#메모리영역#클래스로더#가비지컬렉터
- Spring#spring#스프링#스프링프레임워크#스프링의존성주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- 국비지원#국비교육
- spring#Spring#RequestBody#ResponseBody
- 프로그래밍
- 자바
- Java#정처기#비트연산자#정보처리기사
- tibero#티베로#이중화#failvover
- 쿼리스트링#쿼리문자열#바인딩
- Java#JAVA#매개변수
- Today
- Total
개린이 개발노트
국비지원 JAVA(자바) 프로그래밍 웹개발자 (싱글톤, 캡슐화, 상속화, 오버라이딩, 다형성 까지) 본문
국비지원 JAVA(자바) 프로그래밍 웹개발자 (싱글톤, 캡슐화, 상속화, 오버라이딩, 다형성 까지)
개린이9999 2022. 11. 28. 09:23참조
Call by Value: 내용에 의한 참조
Call by Reference: 객체에 의한 참조
싱글톤(Singleton) 패턴의 정의는 단순하다. 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다.
final 상수선언시 변수 이름은 대문자
static
11. 다음과 같이 정의된 클래스를 작성하고, 객체를 생성해 메서드를 호출
클래스명 MATH
메서드명: max
메서드명:min
Score 클래스를 생성
math , kor, eng 정수형 클래스 변수
합계 구하는 메서드 (반환타입:int)
평균구하는 메서드 (반환타입:double)
public int sum() {
return this.math+this.kor+this.eng;
}
class에 이식을 기본적으로 기억하자.
package statictest;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Student stu1= new Student(100,80,90);
Student stu2= new Student();
int stu1_sum, stu2_sum;
double stu1_avg, stu2_avg;
System.out.println("정수 3개입력:");
int math=sc.nextInt();
int kor=sc.nextInt();
int eng=sc.nextInt();
stu1_sum=stu1.sum();
stu2_sum=stu2.sum(math,kor,eng);
stu1_avg = stu1.avg();
stu2_avg = stu1.avg(math,kor,eng);
System.out.println("학생1의합계"+ stu1_sum+"평균:"+stu1_avg);
System.out.println("학생2의합계"+ stu2_sum+"평균:"+stu2_avg);
}
}
package statictest;
public class Student {
int math,kor,eng;
double stu1_avg, stu2_avg;
Student(){
}
public Student(int math, int kor, int eng) {
this.math = math;
this.kor = kor;
this.eng = eng;
}
public int sum() {
return this.math+this.kor+this.eng;
}
public int sum(int math,int kor,int eng) {
return math+kor+eng;
}
public double avg() {
return(math+kor+eng)/3.0;
}
public double avg(int math,int kor,int eng) {
return (math+kor+eng)/3.0;
}
}
이름이 동일한 메서드를 여러개 못만들지만 , 매개변수가 다른것은 만들수있다.
// 학생 3명중 합계까 가장 큰 값, 가장 작은 값 출력 하기
package statictest;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Student[] students = new Student[3]; //배열방을 만듦, 객체가아님
int i;
int max=0;
int min=100001;
int maxIdx=0,minIdx=0;
for(i=0; i<students.length;i++) {
students[i] = new Student();
System.out.println(i+1+"번째 학생");
students[i].setScore();
students[i].sum();
students[i].avg();
}
for(i=0; i<students.length;i++) {
System.out.println(i+1+"번쨰 학생");
students[i].ShowResult();
}
for(i=0; i<students.length;i++) {
if (students[i].sum>max) {
max=students[i].sum;
maxIdx=i+1;
}
if (students[i].sum<min) {
min=students[i].sum;
minIdx=i+1;
}
}
System.out.println("최대값: "+max+"최소값: "+min);
System.out.println(maxIdx+ "번쨰 학생이 1등");
System.out.println(minIdx+ "번쨰 학생이 1등");
}
}
캡슐화
상속화 개념
부모 클래스
자식 클래스
ex) 게임 캐릭터 생성
직업(부모클래스) - hp,mp,attack 를 만듦
기사-hp,mp,attack가 아니라 -> 직업(부모클래스) 물려받아라(추가 되는 개념)-> 기사만의 특징+직업(부모클래스)
마법사-hp,mp,attack가 아니라 -> 직업(부모클래스) 물려받아라-> 마법사만의특장+직업(부모클래스)
Class job {
}
Class Skill {
}
Class Knight extends job,Skill (x) {
}
Class Mage extends job {
무조건 상속받은 부모클래스 객체가 먼저 생성, 그다음에 상속받을 클래스가 생성
}
Super (부모를 가르침)211p.
this(this는 자기 자신을 가르침)
메서드 재정의 215p
==
오버라이딩
실행되는 내용만 바꾸고자 할 때,
오버라이딩의 조건
자바에서 메소드를 오버라이딩하기 위한 조건은 다음과 같습니다.
1. 오버라이딩이란 메소드의 동작만을 재정의하는 것이므로, 메소드의 선언부는 기존 메소드와 완전히 같아야 합니다.
하지만 메소드의 반환 타입은 부모 클래스의 반환 타입으로 타입 변환할 수 있는 타입이라면 변경할 수 있습니다.
2. 부모 클래스의 메소드보다 접근 제어자를 더 좁은 범위로 변경할 수 없습니다
3. 부모 클래스의 메소드보다 더 큰 범위의 예외를 선언할 수 없습니다.
부모객체
void go() {
print("전진")
}
자식 객체 ( 부모 상속 )
-> 이거 쓰기 싫을 때
void go() {
print("자식 asdasdasdasd")
}
이렇게 바꾸는 것을 오버라이딩
예제
class Parent {
void display() { System.out.println("부모 클래스의 display() 메소드입니다."); }
}
class Child extends Parent {
void display() { System.out.println("자식 클래스의 display() 메소드입니다."); }
}
public class Inheritance05 {
public static void main(String[] args) {
Parent pa = new Parent();
pa.display();
Child ch = new Child();
ch.display();
Parent pc = new Child();
pc.display(); // Child cp = new Parent();
}
이렇게 하면 전진 이라고 표시
다형성(다양한 형태)
다형성-> 형변화int->double
다형성 (Polymorphism)
여러가지 형태를 가질 수 있는 능력, 조상 타입 참조변수로 자손 타입 객체를 다루는 것
객체와 참조변수의 타입이 일치할 때와 일치하지 않을때의 차이
SmartTv s= new SmartTv(); // 참조 변수와 인스턴스의 타입이 일치
TV t= new SmartTv(); // 조상 타입 참조변수로 자손 타입 인스턴스 참조
- 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다.
TV t= new SmartTV(): // 허용
(조상)5개 < 자손7개 허용(o)
SmartTv s= new Tv(); //에러, 허용안됨
(자손) 7개 < (조상)5개 (x)
'국비지원(국비교육) 웹 개발자 과정' 카테고리의 다른 글
국비지원 JAVA(자바) 프로그래밍(인터페이스, 다형성, 내부클래스, 여러가지 예외처리방법, 정규식, 정규표현식, 자바API) (0) | 2022.11.30 |
---|---|
국비지원 JAVA(자바) 프로그래밍 웹개발자 ( 상속,다형성,추상화) (0) | 2022.11.29 |
국비지원 JAVA(자바) 프로그래밍 웹개발자 (계산기 만들기, 오버로딩 ,접근제한자,캡슐화,에어컨 만들기) (0) | 2022.11.25 |
국비지원 JAVA(자바) 프로그래밍 웹개발자 (배열,난수 출력, 로또 번호 만들기,클래스, 인스턴스, 객체 ); (1) | 2022.11.24 |
국비지원 JAVA(자바) 프로그래밍 웹개발자 (반복문: 이중for문, while, do~ while; + 배열 찍먹) (0) | 2022.11.23 |