11일차(문제풀이,상속의 개요및
오버라이딩개요,생성자호출방법)
============================
j0909
=>1)추상화->2)캡슐화->3)다형성->배열
과제>문자열을 입력받아서->대->소,소->대
ConvertTest2.java
1.문자열을 입력? aabG===>for(;;),while(true)
AABg
문자열을 입력?=>문자열의 내용을 비교해주는 메서드?
...
E or e을 입력->System.exit(0);//프로그램 종료
adab123Ggg
=>숫자는 입력하면 안됩니다.->강제종료(return)
=>isXXXX =>문자인지,숫자인지를 체크해주는
메서드를 찾기
->Character클래스->isDigit('2')->true
isDigit('a')->false
->
isSpace(char ch) ==>공백이 있는지를 체크?
"aba dga" ->'a '
Deprecated. --->앞으로 이메서드 사용하지
마세요
Replaced by isWhitespace(char).
2.Repeat.java로 저장
===============
<실행 결과>
1.반복할 문자를 입력? a=>nextLine()->String
"a"->charAt(0)='a'
===========================
2.반복할 횟수를 입력? 3
->nextInt().
aaa
=>caller,worker=>문자,횟수->매개변수
->메서드작성
========================
StringTest.java=>중요메서드를 정리
========================
문자열을 입력?
agGAdgag
s.concat('test')=agGAdgagtest
s.replace('a','c')=cgGAdgcg
s.endsWith('gag')true
s.length()=8
s.indexOf('G')=2
s.trim()=agGAdgag
===>substring(첫번째인덱스번호)
=>첫번째인덱스번호부터 끝까지 문자열을
=>뽑아낼때 사용
0123
"abcd" ->substring(2)="cd"
-->substring(첫번째인덱스번호,두번째인덱스번호)
=>첫번째인덱스번호는 포함하고
두번째인덱스번호 앞번호까지 포함
"abcd"->substring(2,3)="c"
s.substring(2)=GAdgag
s.substring(2,5)=GAd
=>상속의 개요->상속의 오버라이딩의 개요
========================
=>상속=>재산(돈,부동산)=>소유권이전
=>자바의 상속=>멤버변수,메서드
추상화,캡슐화,다형성,상속성
상속=>개발시간이 단축
===>전에 개발한 내용을 다시 한번 반복해서
사용
=>회원로그인(회원가입),방명록,게시판,
파일업로드,다운로드,
========================
=>다음번 사이트개발->재활용
========================
=>회사에 입사->전산->부서에 배치=>급여
사원에 대한정보->class Employee
=======================
팀장에 대한 정보=>class Manager
public class Company (main())
=================
class A=>1000 라인 ,
class B=>중복되는 700라인 (복사)
+
새로운 코딩 300라인
======================1000라인
상속기법
+300라인
중복된 데이터를 코딩=>재활용->코딩양이줄어듬
->개발시간이 단축
class 자식클래스 extends 부모클래스
(=서브클래스) (=슈퍼(Super)클래스)
===========================
1.상속배제
private 멤버변수->멤버변수명앞에 private붙어
있어서 상속불가
private 메서드명->상속불가->자기 클래스내부
에서만 사용
생성자=>접근권한자와 무관하게 상속이 안된다.
public Employee(){}
2.상속->단일상속(하나의 부모클래스), 만 지원
=>인터페이스(다중상속을 흉내)
=======================
다중상속(동시에 부모클래스 2개로부터,,,)
class Child extends Father,Mother
(sub(), sub())
=>프로그램이 복잡->지원불가(C++은 지원가능)
메서드의 호출유형
1.정적(main())->일반메서드->객체명.일반메서드()
2.정적->정적메서드->클래스명.정적메서드
->정적메서드
3.생성자->생성자->this(),this(1),,,,
=======================
4.일반메서드->일반메서드=>객체명.일반메서드명()
객체명을 생략
this.일반메서드명();
=>상속기법을 사용할려면
class 자식클래스명 extends 부모클래스명
==========================
부모,자식사이에 is a관계가 성립이 되는것만
extends예약어를 사용=>상속
ex) p->q=>p이면 q이다(참)
q이면 p이다(참 또는 거짓이 나오면)
거짓
p q
class Manager extends Employee
=>팀장은 그회사의 직원이다.(참)
직원은 그회사의 팀장이다.(거짓)
class 무선전화기 extends 전화기(일반,보편)
(특별)
class 노트북 extends 컴퓨터
관리자의 정보
이름=박길수
부서명=영업부
보너스=4500.0
부하직원수=3
=========
이름=홍길동
나이=25
=========
직원의 이름=홍길동
나이=25
성별=남
주소=서울시 강남구
급여=1500
=========
이름=이길수
나이=32
=========
직원의 이름=이길수
나이=32
성별=남
주소=서울시 강북구
급여=1700
=========
이름=이기자
나이=28
=========
직원의 이름=이기자
나이=28
성별=여
주소=대전시 중구
급여=2000
class NotebookComp extends Computer
//Owner,
//calculate(){~}
this.calculate();
=>상속은 누적제==>기능이 많아진다.(메서드)
06)oop4대-상속-super.ppt->1일차(javapp)
=>owner(Computer),battery(NotebookComp)
상속의 개요,
오버라이딩=>부모로부터 물려받은 메서드가
자식클래스에 맞지않을때 자식클래스에
맞게 내용을 수정하는 기능
(Overridding)==>ex) 파일 덮어쓰기
============================
상속과 생성자와의 관계=>캡슐화(private,public)
protected,default
추상클래스,인터페이스
1.자바에서는 클래스를 새로 작성하면
무조건 java.lang.Object클래스를 상속을 받게
되어있다.
2.상속을 받은 상태(부모,자식관계)에서
자식클래스의 객체를 생성->부모클래스의 생성자를
호출==>나중에 자식클래스의 생성자가 호출
(=>상속과 생성자와의 관계)
=>생성자 호출 매카니즘
==>InheriTest.java
Father객체생성
난 Father기본생성자호출
f=j0909.Father@2a163765
child객체생성
난 Father기본생성자호출
난 Child기본생성자호출
c=j0909.Child@4b6e3f87
this->현재 생성된 객체를
가리키는 예약어
(자식클래스의 객체)
<->super->부모클래스
객체를 가리키는
예약어
this()->기본생성자호출
<->super()
부모클래스의 기본생성자
호출
============
=>super와super() 예습
=>접근권한자(p387)
p379,상속과 생성자
p381 super
=>매개변수가 있는경우
==============
=>추상클래스
==============
과제)OpTest.java로 저장
실행결과)
Scanner
첫번째수 입력? 4 (nextInt)
두번째수 입력?7 (nextInt)
연산자[+,-,*,/]+ //nextLine()
4+7=11
==================