자바 10일차

10. 접근지정자 마무리,static,final,추상클래스



과제풀이)
조건1  ==>OpTest.java로 저장할것.

실행결과 ==>Scanner->숫자(nextInt()),문자(next())
nextLine()

첫번째 숫자를 입력?6
두번째 숫자를 입력?7
연산자를 선택?(+,-,*,/)+
실행결과 13
======================

첫번째수를 입력?
7
Exception in thread “main” 연산자[+,-,*,/]
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:646)
at j225.OpTest.main(OpTest.java:17)

next()=>문자열 하나를 입력받을때 사용
공백을 포함하는 문자열의 경우에는
공백바로 전까지만 입력

nextLine()->공백포함해서 한줄의 문자열을 입력
엔터까지 입력포함
nextInt() 문자->next() ->숫자,문자를 섞어서 입력을 받을 때

Ex) Optest.java(강사님풀이)

OpTest
=====================

2번째문제=>nextLine()도 가능하다.

몇명의 학생을 입력?
2
이름?홍길동
자바점수?56
웹프로그래밍 점수?78
DB의 점수?12
이름?길수현
자바점수?67
웹프로그래밍 점수?23
DB의 점수?90
============
성적 처리 프로그램
============
이름 자바 웹프로 DB 총점 평균
홍길동 56 78 12 146 48
길수현 67 23 90 180 60

몇명의 학생을 입력?
-4
Exception in thread “main” java.lang.NegativeArraySizeException
at j225.secure.Manager.main(Manager.java:14)

=>배열을 사용할때 음수를 입력을 하면 안된다.
=>
몇명의 학생을 입력?
-4
입력할 학생의 수는 음수를 입력할 수 없습니다.

Ex) Manager.javasecure코딩  

Manager 

실행결과

Manager_result


● 접근지정자

◊ protected -> 같은 클래스 O, 같은 패키지 O, 다른 패키지 X
상속을 받은 자식클래스의 객체를 통해서는 접근 가능
◊ public -> 같은 클래스, 같은 패키지, 다른패키지
상속 -> O

Ex) A.java                              

A

Ex) B.java                     

B

 Ex) C.java(protected, public포함)

C

Ex) StringTest.java(Hashcode확인 – secure코딩)

SpringTest

주소값이 다르다(str!==str2)
주소값이 다르다(str!==str3)
내용이 같다(str,str2)(str.equals(str2)
str.hashCode() = -2137068096
str2.hashCode() = -2137068096
내용이 같다(str3,str4)(str3.equals(str4)
str3.hashCode() = 69609650
str4.hashCode() = 69609650


● static(공유=공용)

-> 클래스, 변수, 메소드의 지정자, inner클래스
package j225;
Ex) CarFactory.java(static 멤버변수, 정적 멤버변수)

CarFactory


● final

Ex) Child.java(오류발생하는클래스)

Child

public final class System extends Object
=> 중요한 클래스는 사용만 하길

◊ 자바에서 객체를 생성
Ex) CallByValue.java(매개변수를 복사해서 전달)

CallByValue
◊ 링크문자열로 구분 ->링크(클래스명)
Ex) CallByRef.java(객체 주소값을 전달함)

CallByRef

Ex) GCCollector.java(new를 사용할수없음 – Runtime사용)

GCCollector
 

● 인터페이스와 추상클래스



메서드->일반, 정적메서드, 추상메서드
추상메서드-> 추상클래스->인터페이스
추상메서드 -> 메서드의 기능이 없고 메서드 선언만 되어있는 메서드
추상클래스-> 추상메서드를 가지고 있는 클래스

Ex) Test.java(추상메서드)

Test

※ 추상클래스 특징
1.객체생성이 불가능
2.상속을 받을때 특징
자식클래스에서는 반드시 추상메서드를 반드시 오버라이딩(재정의)하라=>강제성

과제) ReverseTest.java로 저장

실행결과
문자열을 입력?adgagdga
->agdgagda-> 거꾸로 출력

ReverseTest