12일차(super의 개요,생성자호출방법,
접근지정자,추상클래스)
과제)OpTest.java로 저장
실행결과)
Scanner클래스
첫번째수 입력? 4 (nextInt)
두번째수 입력?7 (nextInt)
연산자[+,-,*,/]+ //nextLine(),next()
4+7=11
next()의 경우
문자를 입력하세요?
fkffkf gggag
s=fkffkf
nextLine()
문자를 입력하세요?
dada ddagag
s=ㅇ아dada ddagag
next()
첫수를 입력?->nextInt()
12
두번째수를 입력?->nextInt()
45
연산자[+,-,*,/]?->next()
+
12+45=57
===============
두번째방법
입력받은값을 nextLine()으로 입력
=>적절하게 숫자,소수점형으로 변환->저장
System.out.println("첫수를 입력?");
//a=input.nextInt(); 방법1
a=Integer.parseInt(input.nextLine());//"34"->34
System.out.println("두번째수를 입력?");
//b=input.nextInt(); 방법1
b=Integer.parseInt(input.nextLine());
//"+"->'+'
System.out.println("연산자[+,-,*,/]?");
String s=input.nextLine();/
"50.3"->50.3
->Double.parseDouble(input.nextLine());
===========================
j0910->SuperTest.java
상속->오버라이딩->파일덮어쓰기
==================
상속과 생성자와의 관계=>생성자 호출매카니즘
=========================
super=>부모클래스의 객체를 가리키는 예약어
<->this
super()->부모클래스의 기본생성자를 호출
<->this()->자식클래스의 기본생성자호출
super(1)
super("홍길동")
A
|
B
|
C==>A,B의 기능
super();
=>생략이 가능
=>기본생성자를
없으면 만들어서호출
super(1)
super("홍길동")
->인수가 있는 부모클래스
의 생성자를 호출할 경우
=>인수에 맞는 생성자가
반드시 부모클래스에
존재해야 호출이 가능하다
(생략이 불가능)
=>생성자의 기본기능->데이터에 다양한 방법을 값을
저장
=>부모,자식간의 클래스->객체를 생성=>데이터를
==========
j0910 저장
Employee.java
Company.java
super->부모클래스의 객체를 가리키는
예약어
super.멤버변수=>부모클래스가 가지고있는
멤버변수의 값을 불러올때
super.메서드명()=>부모클래스가 가지고있는
메서드를 호출하라.
=========================
=>중복된 코드를 줄이는 기법
상속과 접근지정자
=>접근권한=>도표
==============
추상클래스와 인터페이스=>설계(모델2->spring)
==============
접근권한자=>영업부,관리부,개발부
=>서로 각각 다른 폴더에 저장된
자바프로그램(클래스)=>어떻게
연결-->실행
==========================
1.private접근권한자
j0910
|
-private
j0910.jprivate
class A, class B(main)
================
두클래스 사이에서
A<---B
----->
A클래스에서 B클래스에 접근을 할수없다
=>객체를 생성할 수가 없어서
접근하고자하는 멤버변수에 데이터를
저장할수 없거나,,,메서드를 호출불가
private접근권한자
같은 패키지
다른 패키지,상속을 받든 다 접근불가
같은 클래스내부에서만 멤버변수와 메서드를
호출이 가능하다.
========================
default접근권한
1.같은 클래스내부에서는 접근이 가능
2.같은 패키지내부에서는 접근이 가능
=====================
3.다른 패키지내부에서는 접근불가
4.상속을 받은 자식클래스의 객체를
통해서도 접근이 불가
j0910.jdefault.packageA
|
-A.java,<--- B.java
j0910.jdefault.packageB
|
-C.java(외부패키지), Sub_A.java(상속)
1.접근하고자하는 자바클래스가 어디에
있는지 모를때 발생하는 에러메세지
->import구문을 줘서 위치
A cannot be to resolved to a type
2.위치는 알고 있지만 접근권한때문에
접근하지못하는 경우
The Type A is not Visible
======================
protected접근권한
1.같은 클래스내부에서는 접근이 가능
2.같은 패키지내부에서는 접근이 가능
=====================
3.다른 패키지내부에서는 접근불가
4.예외조항)
상속을 받은 자식클래스의 객체를
통해서도 접근이 가능하다.(default차이점)
=>public 권한과 연관이 있기때문
public class A { //일단 외부에서 접근을 하기위해서
public class로 작성해야 된다.
protected int i;//멤버변수=>외부에서 접근차단
protected void protected_method(){
System.out.println(" protected i="+i);
}
==========================
j0910.jprotected.packageA
|
-A.java,<--- B.java==>default패키지복사
(protected)
j0910.jprotected.packageB
|
-C.java(외부패키지), Sub_A.java(상속)
==============================
public 접근권한
전제조건)반드시 public class로 작성을 해야 된다.
개발시에 작성한 클래스들을 다른 부서에서
자유롭게 사용하기위해서는 반드시
public class로 작성하고, 멤버변수,와메서드는
public권한을 줘야 된다.
public class A {//외부패키지에서 접근이 가능하다
public int i;
public void public_method(){
System.out.println(" public i="+i);
}
같은 클래스내부에서 접근이 가능
같은 패키지내부에서 접근이 가능
상속을 받은 자식클래스내부에서도 접근이 가능
다른 패키지내부에서도 접근이 가능
=========================
j0910.jpublic.packageA->A.java<--B.java
j0910.jpublic.packageB->B.java
===========================
추상클래스와 인터페이스=>예습