2020.10.20 생활코딩 유투브 공부 ( 모든 출처 : 유투버 생활코딩 ) 2 부 : 객체 지향 프로그래밍 로드된 패키지들간의 중복부터 부터 (98번)

 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 이름 {}


















댓글