캡슐화 연관된 목적을 가지는 변수, 함수를 하나의 클래스로 묶어 외부에서 쉽게 접근하지 못하도록 은닉하는 것 외부에서 내부 정보에 접근, 변경을 불가능하도록 처리하고 해당 객체가 제공하는 필드와 메서드를 통해 접근이 가능 객체 정보 손상과 오용을 방지하고 데이터가 변경되어도 다른 객체에 영향을 주지 않는다 캡슐화는 접근제어자를 통해 이루어진다 접근제어자 public : 접근의 제한이 없음 protected: 동일한 패키지 내에 존재하거나 상속받은 클래스에서 접근 가능 default : 동일한 패키지 내에서만 접근 가능 / 아무런 명시가 없다면 디폴트값 private : 해당 클래스 내에서만 접근 가능 Getter & Setter 객체를 외부에서 읽고 변경하게 되면 객체의 무결성(변하지 않는 형태)이 깨질..
오버라이딩 부모 클래스에서 상속받은 메서드를 자식 클래스에서 재정의하는 것 오버라이딩하고자 하는 메서드의 이름, 매개변수, 리턴 값이 모두 같아야 한다 필드는 오버라이딩이 불가능하다 상속 상위 클래스의 필드와 메서드를 물려받아 하위 클래스가 가져감 두 개 이상의 클래스를 직접적인 관계를 형성하여 불필요한 필드와 메서드의 선언을 최소화 자식 클래스에서 오버라이딩하는 메서드의 접근제어자는 부모 클래스보다 더 좁게 설정할 수 없다 class Parent { void display() { System.out.println("부모 클래스의 display() 메소드입니다."); } } class Child extends Parent { void display() { System.out.println("자식 클래스의..
오버로딩 같은 이름의 생성자나 메서드가 여러개 있더라도 파라미터의 타입이나 개수가 다르다면 사용 가능하다 같은 기능을 하는 메서드를 하나의 이름으로 사용 가능하다 메서드의 이름을 절약할 수 있다 // 변수명은 다르지만 변수 타입이 같기 때문에 불가능 int add(int a, int b) { return a+b; } int add(int x, int y) { return x+y; } // 변수 타입이 다르기 때문에 사용가능 int add(int a, int b) { return a+b; } int add(long a, long b) { return a+b; }
생성자 클래스 명과 메서드 명이 동일 리턴타입을 정의하지 않음(void포함) 생성자를 선언하지 않으면 자동으로 디폴트 생성자를 생성한다 오버로딩이 가능하다 // 생성자 생략 public class Animal { String name; static int age = 3; Animal(String name){ this.setName(name); } void setName(String name) { this.name=name; } } // 생성자 입력 public class Animal { String name; static int age = 3; Animal(String name){ this.setName(name); } void setName(String name) { this.name=name; } }
클래스 객체를 정의(설계)하는 틀, 설계도라고 이해하면 쉬움 ex) 붕어빵 기계로 붕어빵을 만들 때, 붕어빵 기계는 클래스 붕어빵은 객체 public class Animal { public class Example{ Animal dog = new Animal(); } } Animal 클래스의 인스턴스 dog가 만들어졌다(Animal의 객체가 만들어졌다) 클래스에 의해 만들어진 객체 = 인스턴스 Animal cat = new Animal(); Animal dog = new Animal(); Animal horse = new Animal(); 무수히 많은 객체를 Animal 클래스로 만들었다 public class Animal { String name; // 객체변수 } public class Example..
객체지향이란? 객체가 각각의 역할 수행 객체의 결괏값 역시 다른 객체의 결괏값과 상관없이 독립적인 값을 유지 객체를 사용하면 객체의 개수가 늘어나더라도 객체를 생성만 하면 되기 때문에 클래스만을 사용하는 경우와 달리 매우 간단해진다. class Calculator { int result = 0; // 객체변수, 맴버변수, 필드 int add(int num) { // 메서드 result += num; return result; } } public class Sample { public static void main(String[] args) { Calculator cal1 = new Calculator(); // 계산기1 객체 Calculator cal2 = new Calculator(); // 계산기2 ..
Math 클래스 수학과 관련된 일련의 작업들을 수행할 수 있는 클래스(java.lang 패키지안에 포함) Math클래스의 다양한 메서드들은 static으로 구현되어 있어 따로 객체를 생성하지 않고 사용 가능 ※ java.lang 패키지 - java 프로그래밍에 필요한 가장 기본적인 클래스들이 모여있는 패키지 - import구문 없이도 자동으로 프로그램에 포함 1. abs 주어진 값의 절대값을 반환 System.out.println(Math.abs(10)); //10 System.out.println(Math.abs(-10)); //10 System.out.println(Math.abs(-3.1037f));//3.1037 2. max / min 두 값중 더 큰 값, 작은 값을 반환 System.out.pr..
String 관련 문자열 length : 문자열의 길이 String text="1234" System.out.println(text.length()); >> 4 contains : 문자열 포함 여부 확인 String text="안녕하세요 제 이름은" boolean isContains= text.contains("가나"); boolean isContains= text.contains("하세"); >> false >> true startsWith : 해당 문자열이 비교하는 문자열과 시작부분이 동일한지 확인 String text="안녕하세요 오늘의 날씨는"; System.out.println(text.startsWith("안녕")); System.out.println(text.startsWith("안")); ..