전체 글에 해당하는 글 292

  1. OOP(3) : 형변환, 추상 클래스, 인터페이스 2022.06.02

    객체 지향 프로그래밍(OOP: Object-Oriented Programming) 1. 데이터 보호 패키지 / 접근제어자 / 캡슐화 2. 재사용 변경해서 사용(상속 : is-a) / 그대로 사용(포함 : has-a) 3. 다형성 오버라이딩 / 오버로딩 4. 형변환 5. 추상 클래스 / 인터페이스 ← 오늘은 여기! 6. 예외처리 super super, super() → 상위 클래스의 참조 변수 또는 생성자를 호출하는 데에 사용된다. Object 클래스를 제외한 모든 클래스의 생성자 첫 줄에 생성자 this() 또는 super()를 호출한다. 그렇지 않으면, 눈에 보이지는 않지만 컴파일러가 자동으로 super()를 첫 줄에 삽입한다. 왜? → 하위 클래스의 인스턴스를 생성하면 하위 클래스와 상위 클래스의 멤..


  2. OOP(2) : 재사용, 다형성 2022.05.31

    객체 지향 프로그래밍(OOP:Object-Oriented Programming) 1. 데이터 보호 패키지 / 접근제어자 / 캡슐화 2. 재사용 변경해서 사용(상속 : is-a) / 그대로 사용(포함 : has-a) 3. 다형성 오버라이딩 / 오버로딩 ← 오늘은 여기! 4. 형변환 5. 추상 클래스 / 인터페이스 6. 예외처리 상속 (is-a, Inheritance) 기존에 있던 클래스를 재사용해서 새로운 클래스를 작성하는 것. 이전의 클래스를 확장하는 개념. 공통으로 적용되는 메서드와 변수 등 반복되는 부분을 제거할 수 있어 코드를 줄일 수 있다. 또한 코드를 공통으로 수정할 수 있어 관리에도 용이하다. 단, 속도가 느리고 상위 클래스를 수정하면 하위 클래스에도 영향을 준다. (결합성) 반대로 하위 클래..


  3. OOP(1) : 데이터 보호 2022.05.30

    객체 지향 프로그래밍(OOP:Object-Oriented Programming) 1. 데이터 보호 패키지 / 접근제어자 / 캡슐화 ← 오늘은 여기! 2. 재사용 변경해서 사용(상속 : is-a) / 그대로 사용(포함 : has-a) 3. 다형성 오버라이딩 / 오버로딩 4. 형 변환 5. 추상 메서드 / 인터페이스 6. 예외 처리 패키지 패키지는 클래스의 묶음이다. 클래스 또는 인터페이스를 포함시킬 수 있다. 서로 관련된 클래스끼리 묶어 효율적으로 관리하기 위해 사용한다. (관련된 클래스끼리 모아 관리, 라이브러리화) 같은 데이터끼리 묶어서 사용 → 배열 다른 데이터를 묶어서 사용 → 클래스 명령문을 묶어서 사용 → 메서드 데이터+명령문 → 클래스 통으로 묶어서 사용 → *패키지* 제어자 제어자(modif..


  4. 변수/메서드/초기화 정리 2022.05.27

    더보기 객체 지향 프로그래밍 : 설계 → 활용 → 메모리 삭제 1. 변수 1) 클래스 변수(공유변수, 공통변수) / 형식 : *{$접근지정어} static {$데이터형} {$변수명}; : 모든 인스턴스가 하나의 저장공간을 공유하기 때문에 항상 공통된 값을 가진다. 메모리에 접근하는 방식은 {$클래스명}.{$변수(or메서드명)} 컴파일러에 의해 자동응로 저장되어 new를 사용할 필요가 없다. → 자동으로 초기화됨 (ex)Math.random(), String.valueOf(), Integer.MAX_VALUE 등... 웹에서는 한글변환메서드를 만들거나 데이터베이스 연결, 싱글톤(디자인 패턴)등에 활용한다. 2) 인스턴스 변수(객체 변수) : 한 개의 객체만 사용이 가능하다. 인스턴스가 생성(new 생성자)..


  5. [보충] static & instance 2022.05.27

    package day19; class Member{ String name; String sex; String address; String tel; int age; // 생성자 => 초기화만 담당 Member(String n,String s,String ad,String t,int a) { name=n; sex=s; address=ad; tel=t; age=a; } void print() // 멤버메소드 { System.out.println("이름:"+name); System.out.println("성별:"+sex); System.out.println("주소:"+address); System.out.println("전화:"+tel); System.out.println("나이:"+age); } // 별도의 ..


  6. 클래스(4) : 클래스의 구성 요소 / 초기화 2022.05.26

    클래스의 구성 요소 1. 변수 1.1. 공유 변수 1.2. 인스턴스 변수 1.3. 지역 변수 2. 메서드 2.1. 인스턴스 메서드 2.2. 클래스 메서드(static,공유 메서드) 3. 초기화(변수) ← 오늘은 여기 3.1. 생성자 3.2. 초기화 블록 3.2.1. 인스턴스 블록 3.2.2. 정적(static) 블록 변수의 초기화 변수를 선언하고, 처음 값을 지정하는 것을 "초기화"라고 한다. 멤버변수는 초기화를 하지 않아도 자동으로 변수의 자료형에 맞게 디폴트값으로 초기화되지만, 지역변수는 사용 전에 반드시 초기화를 해 주어야 한다. → 명시적 초기화 = int a = 10; 처럼 선언과 동시에 값을 초기화해주는 것 final 변수는 반드시 명시적 초기화로만 값을 넣을 수 있다. 멤버변수(클래스변수, ..


  7. 클래스(3) : 클래스의 구성 요소 / 메서드 2022.05.25

    클래스의 구성 요소 1. 변수 1.1. 공유 변수 1.2. 인스턴스 변수 1.3. 지역 변수 2. 메서드 ← 오늘은 여기 2.1. 인스턴스 메서드 2.2. 클래스 메서드(static,공유 메서드) 3. 초기화(변수) 3.1. 생성자 3.2. 초기화 블록 3.2.1. 인스턴스 블록 3.2.2. 정적(static) 블록 메서드? 재사용을 목적으로 특정 작업을 수행하는 명령문의 집합이다. 객체지향 프로그래밍은 객체와 객체를 상호 연결하여 구현하는 프로그래밍이다. 함수와 유사하게 어떤 값을 입력하면 해당 값으로 작업을 수행하여 결과를 반환한다. 단, 함수와 달리 메서드는 입력값이 없거나, 출력값이 없거나, 둘 다 없을 수도 있다. 왜 사용하는가? 1. 재사용성이 높다. 일단 한 번 메서드를 만들어 놓기만 하면 ..


  8. 클래스(2) : 클래스의 구성 요소 / 변수 2022.05.24

    클래스의 구성요소 1. 변수 ← 오늘은 여기 1.1. 공유 변수 1.2. 인스턴스 변수 1.3. 지역 변수 2. 메서드 2.1. 공유 메서드 2.2. 인스턴스 메서드 3. 초기화(변수) 3.1. 생성자 3.2. 초기화 블록 3.2.1. 인스턴스 블록 3.2.2. 정적(static) 블록 모든 클래스는 디폴트로 4byte 메모리를 가지고 있다. 단, 어떤 멤버변수를 갖고 있느냐에 따라 메모리는 달라진다. 1. 변수 1.1. 멤버변수(전역변수) 클래스 전체에서 사용되는 변수이다. 클래스 블록 내에서 선언된다. 자동 초기화되어있음. 1.1.1.인스턴스 변수 : new를 이용해서 메모리에 저장하는 객체변수(가장 많이 사용됨)로, heap 메모리에 저장된다. : 인스턴스를 생성할 때 생성되고, 참조변수가 없을 때..


  9. 클래스(1) + 변수잡기 연습 2022.05.23

    클래스? 클래스란 "객체를 정의해 놓은 것"으로, 해당 객체가 가져야 하는 기능과 속성을 정의한다. (=설계도) 다시 말해, 객체를 생성하는 데에 클래스가 사용되고 객체는 클래스에 정의된 대로 생성된다. 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다. 클래스를 사용하는 이유 학생에 대한 정보를 관리한다고 했을 때, 학번, 이름, 생년월일 등 다양한 데이터타입으로 이루어진 정보들이 있다고 하자. int studentNo, String studentName, String studentBirth 등 각각의 배열로 저장하기보다는, Student라는 하나의 클래스를 만들어 각 학생별로 고유한 메모리에 해당 학생의 정보를 저장하는 것이 좀 더 효율적이다. 새로운 학생을 추가할 때..


  10. 메서드(5) : call by *** 2022.05.20

    자료형별로 매개변수로 사용될 때 아래와 같은 특징을 갖는다. 호출 방법 Call by value (값 전송) - 기본형, String 인자로 받은 값 자체를 복사하여 호출한다. Read-only 인자가 사용되는 메서드 자체에서만 변경되며, 실제 값은 변경되지 않는다. 실제 값이 보존되기 때문에 안전하지만 메모리 사용량이 늘 수 있다. Call by reference (주소 전송) - 배열, 클래스 인자로 받은 값의 주소를 참조하여 해당 인자 자체를 호출한다. Read&Write 주소 안에서 변경되기 때문에 실제 값도 변경된다. 직접 참조를 하기 때문에 처리속도가 빠르지만 실제 값에 영향을 준다. 예제1 package day15; import java.util.Arrays; public class Meth..