API 와 API 문서 보는 법
System.out.println()
System 은 클래스이고 out 은 그 클래스의 필드(변수) 이다. 이 필드가 메소드(println)를 가지고 있는 것은 이 필드 역시 객체라는 것을 알 수 있다. 그리고 System 을 인스턴스화한적이 없음에도 불구하고 필드 out 에 접근할 수 있는 것은 out 이 static 이라는 것을 암시한다.
package ~~
import java.lang.* -> 자바가 java.lang 이라는 패키지를 자동으로 import 해줘서 없어도 동일 ( 자바가 제공하는 여러가지 패키지들중 하나 )
: java 라는 패키지 밑에있는 lang 이라는 패키지 밑에있는 별표 ( 모든 클래스 )
를 현재
public class LibraryDemo1 (
public static void main(String[] args) {
System.out.println(1) ; // 얘는 java.lang 에 들어 있는것
}
}
UI 와 API
API : 시스템과 시스템을 제어하는 사람 사이에 있는 조작 방법
User Interface
사용자를 대면하는 접점이 되는 페이지에 있는 모든 버튼등등
Application programming interface
주소표시창에 javascript:alert("Hello world");
브러우저는 이 명령에 따라서 ui 를 화면에 출력한다.
aleart 이라는 걸 브라우저에 전달 -> 브라우저가 실행해줌
(코드의 형식을 띄고 있는 인터페이스 )
컴퓨터가 사용하는 인터페이스 :
api 들 ( 예: 웹브라우저 ( 기반이되는 프로그램 )을
우리가 응용해서 소프트웨어를 만든다
경고창(aleart)은 웹브라우저 개발사에 소속되어 있는 개발자들이 만든거겠지?
운영체제는 브라우저에대한 기반시스템(플렛폼) 이 되는 것이다.
접점이 되는 부분 : interface
API 문서보는 방법
https://docs.oracle.com/javase/7/docs/api/index.html
들어가서 원하는 Package 찾는다.
접근제어자
권한의 차등을 주는 것
규제에 해당되는 것 : 추상 클래스, final , 접근 제어자, 인터페이스 등등
접근 제어자 2 : 문법
권한의 차등을 주는 것
public 누구든지 그 클래스를 호출해서 사용할 수 있다
클래스에 소속되어 있는 애가 private이면
클래스 내부적으로는 사용할 수 있지만 외부의 클래스에서는 호출 할 수 있다.
접근 제어자3 : 사용하는 이유
1. 첫번째 코드 예시
package ~
Class A {
public String y(){
return "public void y()";
}
private String z() {
return "public void z()";
}
public String x() {
return z();
}
}
public class AccessDemo1 (
public static void main (String [] args) {
A a = new A();
System.out.println(a.y());
// 아래 코드는 오류가 발생한다.
//System.out.println(a.z()); -> A 클래스에 있는 z() 메소드는 private 이라서 A 클래스 에서만 사용이 가능하다.
System.out.println(a.x());
}
}
2. 두번째 코드 예시
package ~~ ;
class Calculator{
private int left, right ;
//전역변수가 public 이라면 c1.left = 100 ; 이렇게 사용자가 직접 변경을 시킬 수 있다. 만약 변수를 직접 변경을 하게 되면 ( 통제를 할 수 있게 되면 ) 사용자가 입력하는 어떤 값을 통제할 수 없다. ( 마이너스 값도 입력할 수도 있음)
방지하기 위해 private 으로 지정하면 c1.left = 100; 하면 에러발생. -> 사용자가 의도하지 않은 방법으로 내부적인 클래스의 상태를 바꾸는 불상사를 막을 수 있다.
public void setOprands(int left, int right){
this.left = left ;
this.right = right;
}
private int _sum(){
return this.left+this.right;
}
public void sumDecoplus(){
System.out.println("++++" + _sum() + "++++");
}
public void sumDeciMinus() {
System.out.println("----" + _sum() + "-----" ) ;
}
}
// 이렇게 장식으로 결과만을 (제약사항) 사용자들이 접근할 수 있는 메소드는 public 으로 해주고
실제 계산이 일어나는 내부적으로 일어나는 부분을 private 으로 해서 내부에 접근하는 것을 통제하는것
public class CalculatorDemo {
public static void main(String[] args) {
Calculator c1 = new Calculator();
c1.setOprands(10, 20); //이렇게는 사용할수 있나봐 대신 this.right , this.left 를 변경하는 것은 안되는건가봐 c1..left = 100; 이렇게는 안되나봐
c1.sumDecoPlus();
c1.sumDecoMinus();
접근제어자 4 : 세밀한 제어 (멤버의 제어자 )
default 는 자바에서 접근제어자 ( private , public 등등 ) 을 명시하지 않으면 default 접근제어자가 된다.
protected public
private : 같은 패키지만 접근 가능하다.
같은 클래스에 있는 public , default 모두 접근이 가능하다.
같은클래스 같은패키지 다른패키지서브클래스 관계없음
public 0 0 0 0
protected 0 0 0 x
default 0 0 x x
private 0 x x x
public : 모든곳에서 접근이 가능하다.
private 은 같은 클래스에서만 접근이 가능하다.
public class 의 제약사항 하나의 소스코드에서는 하나의 public class 만 존재가능하다.
public 파일의 이름과 클래스이름이 동일해야한다.
public, private , protected , default 모두 같은 클래스에서 다 접근하다.
* protected 와 default 의 차이
둘다 같은 패키지에서는 접근이 가능하다.
다른패키지인 경우라도 상속관계라면 : protected 는 접근 가능 defualt 는 접근 불가
접근제어자 5 : 클래스 접근 제어자 : default , public .
클래스도 접근제어자를 붙일 수 있다.
public : 다른 패키지도 사용 가능하다.
default : 같은 패키지에서만 사용이 가능하다.
2가지 종류
1. public class 이름 {}
2. class 이름 {}
댓글
댓글 쓰기