ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 클래스 #4
    Java 2023. 1. 18. 18:11

    2023년 1월 13일 2023년 1월 16일 2023년 1월 17일 2023년 1월 18일

    • 객체지향프로그래밍(Object Oriented Programming)
      • 실제 세상에서 사물의 속성과 기능, 사물간의 관계를 컴퓨터 프로그램에서도 사용할 수 있게 프로그래밍하는 방법 이다.
    • 객체지향 프로그래밍 언어의 특징
      • 상속
        • 부모가 가지고 있는 여러 속성과 기능들을 자식이 그대로 물려받을 수 있게 한다
        • 코드의 중복을 줄여준다
      • 다형성
        • 부모/자식간의 관계가 있는 클래스는 자식이 부모의 타입으로 변환이 가능하다
        • 예) 메인보드의 그래픽카드 슬롯이 있고 회사가 다르지만 그래픽카드에 꽂아 쓸 수 있다
      • 추상화
        • 개발자들이 구현하기 전에 객체들의 특징이나 속성들을 파악하고 설계하는 과정이다(장점 : 설계 시 이점이 있다)
        • 보고서 양식 같은 것 들 ( 값이 채워져 있지 않지만 미리 설계된 포멧, 보고서양식, 이력서, 회원가입등등 양식이 있는 서류)
      • 캡슐화
        • 하나의 관련 있는 속성이나 기능들을 하나로 묶어 담아둬서 관리하기 편하도록 하기 위함
        • 하나는 속성이나 기능들을 객체 내부에 숨겨 놓고 외부에서 불필요한 정보를 볼 수 없도록 해서 개게 내부에 문제가 생기지 않도록 보호하며 꼭 필요한 속성이나 기능만 외부로 노출하는 것이다.
    • new연산자
      • 인스턴스 생성
      • 생성자를 호출해 힙 영역에 필드를 초기화 후 주소를 확보해 반환하는 연산자
    • 클래스와 객체
      • 클래스는
    • 클래스의 구조
      • 속성과 기능으로 나눌 수 있다
        • 필드
          • 생성자나 메서드 안에 있는 변수와는 다르다. 생성자와 메서드 안의 변수는 그 안에서 사용되지만 필드는 클래스 내부의 전체에서 사용된다.
        • 생성자
          • 선언
          • 기본생성자는 컴파일 될 때 기본생성자가 생성 된다.
        • 메서드
          • 객체의 기능이 해당하는 것 toString과 같은 것
    • 필드
      • 객체의 고유한 속성이나 상태값을 저장하는 곳
      • Car라는 클래스가 있으면 그 안에 색상, 종류, 제조사 등이 필드이다.
      • 클래스 변수는 클래스 타입으로 부르는게 좋다 인스턴스변수로 부를 수는 있다.(글자가 기울임에 따라 변수가 뭔지 알 수 있음)
      종류 위치 선언방법 생성시기 생성 종료
      클래스변수 클래스 블록 내 static int num; 클래스가 메모리에 로드(해당 프로그램 실행중에 클래스가 언급 될 때) 프로그램이 종료 시 까지 해제가 안됨  
      인스턴스 변수 클래스 블록 내 int num; 객체생성(인스턴스가 생성될때) 더이상 참조하는 객체가 없을 때(해당 객체가 null값이 될때) 객세가 사라질때(인스턴스가 사라질때)  
      지역 변수 메서드 등 기타 블록 내 int num; 해당 실행문이 실행될 때(메서드가 호출 됐을 때) 메서드가 return값을 줄떄 생명이 끝남  
    • 메서드
      • 의존호출 (객체의 기능)
      • 객체로부터호출(대부분)
      • (메서드 선언부)접근제한자 리턴타입 메서드명 (매개변수...){ 실행문 … return 값(메서드 구현부) }
      • 접근제한자
        • public, protected, private, defult
      • 리턴타입
        • 실행 포인트로 되돌려 주는 것
        • 리터값이 없으면 void(명시적)라고 적어줘야한다.
        • 선언을 String으로 하면 리턴 값도 String으로 해야한다.
      • 메서드명 작성 규칙
        • 영문소문자로 하고 두 단어 이상이면 카멜 법을 사용한다.
      • 매개변수
        • 외부로부터 변수를 입력받기 위해 사용된다. 입력받은 변수는 메서드 안에서 사용된다.
        • 가변인자(매개변수와 매개변수 사이에 … 을 찍는다)예)(int…x)를 매개변수로 해두면 몇 개를 받을지 모를 때 사용하면 된다.
          • 가변인자를 쓰면 배열로도 받을 수 도 있고 그냥 자료형 타입으로도 받을 수 있다.(int… x)는 인트형 배열이든 인트형 변수든 상관 하지 않는다)
        • 매개변수는 0개 이상 받을 수 있지만 리턴은 1개이다
        • 매개변수와 지역변수는 같은 색이다 (회색)
        • p.add2(10, 5); 10과 5는 인자(arguments) 이다
        • void add(int x, int y) {} (x,y는 파라미터라고 한다)
      • 메서드의 실행(호출)
        • 메서드를 실행하는 곳을 크게 같은 클래스 내부에서 호출하는 경우와 다른 클래스 외부에서 호출하는 경우로 나뉜다
        • 메서드도 변수와 마찬가지로 클래스 메서드와 인스턴스 메서드가 있따. 클래스 메서드는 클래스명으로 직접 실행이 가능하고, 인스턴스 메서드는 객체를 통해 실행할 수 있다. 객체 생성 없이 바로 실행할 수 있는 메서드는 선언부에 static을 붙여 주면 된다.
        • 큐의 규칙을 따른다 LIFO(후입선출) 1,2,3들어가면 3, 2, 1순으로 출력된다.\
    • 메서드 오버로딩
      • 리턴타입, 이름, 파라미터(갯수와 타입 중요)
      • 이름은 같지만 파라미터가 다른 걸 오버로딩 이라고 한다
      • 같은 이름을 가진 메서드이면서 매개변수의 자료형, 매개변수의 개수, 순서 중에 하나 이상 달라야 한다
    • 생성자
      • 생성자의 용도는 객체의 초기화 목적이다 .
      • 클래스 이름과 생성자 이름은 동일해야 한다.
      • 클래스명 ( 매개변수…)초기화}
      • 실행문…
      • {
      • 기본생성자
        • 모든 클래스는 생성자가 반드시 하나 이상 존재 한다. 사용자가 직접 생성하지 않아도 생성은 되지만 직접 생성 할 경우 기본 생성자는 없어진다.
        • new를 통해서 생성자를 생성한다
    • this
      • 미래에 생성되는 객체 주소 값
      • A a = new A()를 인스턴스를 생성할때 초기화 하는 주소 값
      • 인스턴스나 생성자 내에서만 사용한다
      • 사용법에는 this.변수 도 있지만 this(”문자열”,변수,변수)도 사용 할 수 있다
        • this(”문자열”,변수,변수)는 해당 생성자를 찾는다
        • 이 방법은 잘 사용하지 않는다. this로 생성자를 호출하는 경우는 없다
      • this. 이 있지만 생략되어있다.
      • this()
        a()
        a(int i){
        	this();
        }
        매개변수있는 A생성자가 기본생성자 A를 부를때 this()를 써서 호출 할 수 있다.
        
      • 오버로딩된 내 클래스 내에 생성자를 호출(본인 생성자 이외에 생성자)
    • super
      • 조상의 인스턴스 this와 차이점
      • this와 super는 동시에 올 수 없고 첫 줄에 쓴다.
    • 초기화 블록
      • 클래스 위 블록
      • 목적은 : 인스턴스 혹은 ? 초기화 시 필요하다//클래스 블록을 초기화 할 때 쓰인다.
      • 초기화 블록은 생성자 보다 먼저 실행된다.
      • static 초기화 블록
        • 클래스가 메모리에 로드 될 때
      • 인스턴스 초기화 블록
        • 객체가 생성될 때 마다
    • 패키지
      • 숫자로 시작할수 없다 (_ & 는 사용 가능)
      • 관례적으로 소문자로 작성
      • 회사에서는 회사 도메인으로 많이 사용
      • 명사형
      • 단어의 중첩이 있을땐 하위 패키지를 만든다(두 단어를 쓰진 않는다 (사용은가능하나 권장은 아님))
      • 중복되는 패키지를 불러올 때 클래스 앞에 직접적인 패키지명을 입력해준다
      • import java.util.Date; Date date; java.sql.Date d2;(따로 java.sql을 불러올 수 있다)
      • java.lang은 자동 Import가 되므로 따로 선언하지 않아도 String이나 System등등 사용가능 하다(물론 그냥 import에 써줘도 된다)
      • java.util.*을 쓴다면 java.util 밑에 있는 패키지는 모두 사용 할 수 있다.
    • 접근제한자
      • 클래스는 private을 쓸 수 없다. (의미가 없어짐 클래스를 부를 수도 없고 접근도 불가능하다)
      • 클래스, 메서드=public 필드=private 클래스 상수는 public으로도 사용(기본적으로 예외사항은 있다)
      접근제한자 모든클래스 상속관계 동일패키지 동일클래스
      public O O O O
      protected   O O O
      (defult)     O O
      pritvate       O

    'Java' 카테고리의 다른 글

    상속#2  (0) 2023.01.20
    상속#1  (0) 2023.01.18
    클래스 #3  (0) 2023.01.18
    클래스 #2  (0) 2023.01.16
    클래스  (0) 2023.01.16
Designed by Tistory.