Java 26

추상 클래스 (Abstract Class)

추상 클래스 클래스 정의시 abstract class로 정의한다. 추상 메소드를 하나 이상 포함한다. 추상 메소드는 선언만하고 구현하지 않은 메소드로 abstract 를 명시한다. 추상 클래스는 완전하지 않기 대문에 객체를 생성할 수 없다. 하위 클래스에서 상속 받은 모든 추상 메소드를 구현하면 객체를 생성할 수 있다. 추상 메소드를 모두 구현하지 않을 경우, 하위 클래스도 모두 추상 클래스이다. 추상 클래스는 하위 클래스의 공통점을 뽑아 상속해줄 목적으로 만들고, 하위 클래스에 기본 틀을 제공한다. package Abstract; // 부모 추상 클래스 public abstract class AbstractParent{ String msg; public abstract void print(); } //..

Java 2023.01.20

접근제어자(Access Modifier)

멤버 변수에서 접근 제한 멤버 변수에는 다른 파일에서 사용가능하도록 하는 접근제어자가 있다. default : 같은 패키지 내에서만 접근 가능 public : 아무데서나 접근 가능 private : 다른 곳에서 접근 불가 protected : 상속관계만 접근 가능 생성자의 접근 제한 클래스에 생성자를 선언하지 않으면 컴파일러에 의해 자동으로 기본 생성자가 추가된다. 자동으로 생성되는 기본 생성자의 접근 제한은 클래스의 접근 제한과 동일하다.( 클래스가 default 접근 제한을 가지면 기본 생성자도 default 접근 제한을 가지고, 클래스가 public 접근 제한을 가지면 기본 생성자도 public 접근 제한을 가지게 된다.) public 접근 제한: public 접근 제한은 모든 패키지에서 아무런 제..

Java 2023.01.19

super 키워드

1. super 키워드 부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하는 데 사용하는 참조 변수 반대 개념으로는 this 키워드 존재, this는 인스턴스 변수가 지역 변수의 이름과 같을 경우 사용 예시) super 키워드를 사용하여 부모 클래스의 print 메소드 호출 Child 클래스의 super.print(); package ParentsClass; // 부모 클래스 public class Parent { protected String pMsg = "Hello"; @Override public void print() { System.out.println("Parent : " + pMsg); } } // 자식 클래스 public class Child extends Parent{ pu..

Java 2023.01.19

생성자란? / this 로 사용하는 멤버변수

1. 생성자 함수의 리턴 타입이 없음 클래스의 이름과 같은 이름으로 함수를 정의 메모리에 객체를 생성하여 영역을 확보 바로 인스턴스 변수에 데이터 셋팅 2. this this는 객체 자기 자신을 의미, 자신의 메모리를 가르킴 전역 변수와 지역 변수를 구분짓기 위한 참조 변수 생성자의 파라미터 이름이 전역 변수와 이름이 같을 때 구분하기 위해 사용 this.변수명으로 정의 클래스 변수, static 키워드에서는 this를 사용 할 수 없음 public void setData(String name, String tel, String address){ this.name = name; this.tel = tel; this.address = address; } this.name = name 에서 두개의 변수 na..

Java 2023.01.19

상속(Constructor), 다양성, 오버라이딩(Overriding)

1. 상속 자식 클래스는 부모 클래스의 모든 속성을 상속 받고 사용 가능함 상속 받은 메소드는 필요에 따라 자식 클래스에서 따로 재정의 할 수 있음 (메소드 오버라이딩) 자식 클래스 정의 방식은 '자식클래스이름 extends 부모클래스'로 정의 자식 클래스 호출시 부모 클래스도 함께 호출 됨 자식 클래스에서 상속 받은 인스턴스 변수는 자식 클래스마다 각각의 이름 공간을 가짐 부모 클래스의 메소드 호출시에는 super 키워드를 사용 1.1. 조부모 / 부모 / 자식 클래스 정의 package ParentsClass; // 조부모 클래스 public class GrandParent { protected String gpMsg; // 호출시 조부모 클래스 생성자 생성 메시지 출력 public GrandPare..

Java 2023.01.19

getter / setter 함수

멤버변수가 private 로 되어있으면, 멤버변수에 데이터를 저장하는 함수 , 가져오는 함수가 필요하다. name 은 private 인 멤버변수이다. name 의 데이터는 private 이기 때문에 출력이 되지않는다. 이럴때 사용하는 것이 getter / setter 함수이다. getter / setter 함수 setter : 멤버변수에 데이터를 저장하는 함수 getter : 멤버변수의 데이터를 가져오는 함수 class 에 private 인 멤버변수인 name 을 가져오는 setter / getter 함수를 작성하였다. private 로 되어있는 멤버변수가 많다면 이클립스의 툴을 이용하면 된다. 오른쪽 마우스를 클릭하여서 1. Source - Generate Getters and Setters ... 를..

Java 2023.01.19

생성자 사용법과 생성자의 메소드 오버로딩

1. 생성자 개념 MemberMain 클래스에서 아래의 Member 클래스를 호출하여서 사용하고 있다. 이때 생성자의 개념이 나타나는데, 생성자( Constructor ) 란? 눈에 보이지 않게 자동으로 만들어지는 함수 리턴의 데이터 타입이 없다. 함수의 이름이 클래스 이름과 같은 함수를 생성자라고 한다. 2. 생성자 오버로딩 위 Member() 함수 아래에 새로운 Member 함수를 생성하였다. 생성자도 메소드 오버로딩이 가능하다. 이것을 생성자 오버로딩이라고 한다. 생성자 오버로딩으로 생성자를 만들면, 꼭 위에 Member() 이 디폴트 생성자를 눈에 보이게 만들어둬야한다. 생성자 오버로딩을 이용하여 객체 생성을 한 예시이다.

Java 2023.01.19

메소드 오버로딩 (Method Overloading)

1. 오버로딩 (Overloading) 하나의 메소드의 이름으로 여러 기능을 구현하는 것 2. 오버로딩의 조건 정의하는 메소드의 이름이 동일해야 한다. 입력받는 데이터의 데이터 타입이나 파라미터의 수가 달라야 한다. public class Add { // 메소드 오버로딩 int add(int x, int y) { return x + y; } float add(float x, float y) { return x + y; } double add(double x, double y) { return x + y; } String add(String x, String y) { return x + y; } public static void main(String[] args) { Add a = new Add(); //..

Java 2023.01.18

클래스와 객체, 인스턴스 변수, 메소드

1. 클래스 (Class) 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀을 의미 객체들의 공통점을 찾아내서 하나의 틀로 만든것이다. 객체를 조금 더 효율적으로 생성하기 위해 만들어진 구문 2. 객체 (Object) 클래스에 정의된 내용대로 메모리에 생성된 것 3. 객체의 선언 및 생성(메모리 할당) 객체 변수 선언 : 클래스명 객체명; 객체 변수 생성 : 객체명 = new 클래스명(); 객체의 선언과 생성은 한 줄로도 표현 가능 public class Test { int a; } Test t; // 객체 변수 선언 t = new Test(); // 객체 변수 생성 Test t2 = new Test(); // 객체 변수 선언과 생성 4. 인스턴스 변수 사용과 접근 ..

Java 2023.01.18