생활코딩 - Java(접근 제어자)
·
Java & Spring/Java
□ 접근 제어자 1. 사용자가 객체 내부적으로 사용하는 변수나 메소드에 접근함으로서 개발자가 의도하지 못한 오동작을 일으키게 되는 문제로부터 객체의 로직을 보호하기 위해서는 맴버에 따라서 외부의 접근을 허용하거나 차단해야 할 필요가 생긴다. 2. 사용자에게 객체를 조작 할 수 있는 수단만을 제공함으로서 결과적으로 객체의 사용에 집중 할 수 있도록 돕기 위함이다. 구분 같은클래스 같은패키지 다른패키지 서브클래스 관계없음 public O O O O protected O O O X default O O X X private O X X X
생활코딩 - Java(상속과 생성자, 오버라이딩과 오버로딩)
·
카테고리 없음
□ 상속 상속(Inheritance)이란 물려준다는 의미로 어떤 객체가 있을 때 그 객체의 필드(변수)와 메소드를 다른 객체가 물려 받을 수 있는 기능을 말한다. 위 코드에서 Calculator클래스의 메소드를 사용 할 수 있는 이유는 하위 클래스인 SubstrationableCalculator가 extends를 통해 Calculator을 상속받았기 때문이다. □ 상속과 생성자 - 객체를 생성할 때 자동으로 생성자를 만들어준다. - 매개변수가있는 생성자를 정의해놓은 상태이면 생성자를 자동으로 만들어주지 않는다. - 생성자를 통해서 left, right의 값을 설정해준다. □ super() : 하위 클래스에서 상위 클래스 생성자를 호출 ※ 하위 클래스의 초기화 코드는 super()보다 앞에 와서는 안된다 ..
생활코딩 - Java(초기화와 생성자)
·
카테고리 없음
ㅁ 생성자(Constructor)의 필요성 위의 예에서 메소드 setOprands의 값으로 10과 20을 지정했다. 이 값들은 객체 내부에서 인스턴스 변수 left와 right의 값으로 설정되어서 유지된다. 객체 Calculator를 사용하기 위해서 사용자는 메소드 sum을 호출하기 전에 setOprands를 호출해야 한다는 것을 기억하고 있어야 한다는 것을 의미한다. 이러한 절차를 기억해야 한다는 것은 사용자 입장에서는 불편할 뿐 아니라 잘못된 사용으로 오류가 발생할 확률을 높이는 결과를 초래 할 수 있다. 그래서 사용하는 것이 생성자(Constructor)이다. → 생성자는 클래스안에서 가장 먼저 작동하는 메소드이다. 아래와 같이 인스턴스가 생성될 때 left, right의 값을 입력하도록 강제한다면..
생활코딩 - Java(유효범위)
·
Java & Spring/Java
□ 유효범위(Scope) public static void main(String[] args) { for (int i = 0; i < 5; i++) { a(); System.out.println(i); } 위 메소드에서 i = 0부터 시작해 i < 5 인경우 i에 +1을 하며 System.out.println(i); 을 반복하는 for문이다. 그런데 메소드 a();로 인해 i = 0 이 반복되어 문제가 발생하지않는 이유는 a()라는 메소드 안에서 int i = 0;이라는 변수가 정의되어있기때문에 a()밖으로는 영향을 못미치기 때문이다. → int i = 0;의 경우 a()라는 메소드 안이 유효범위(scope)이다. ※ 두 코드의 차이점 : i = 0; 은 변수를 할당 한 것이고 int i = 0;은 변수..
생활코딩 - Java(클래스와 인스턴스 그리고 객체)
·
카테고리 없음
1. 클래스와 인스턴스 □ 클래스와 인스턴스 // 아래의 로직이 1000줄 짜리의 복잡한 로직이라고 가정. System.out.println(10 + 20); System.out.println(20 + 40); 중복 제거 → 메소드 사용 리펙토링(refactoring) public static void sum(int left, int right) { System.out.println(left + right); } public static void main(String[] args) { sum(10, 20); sum(20, 40); } □ Calculator class 2. 클래스 맴버와 인스턴스 맴버 □ 클래스 소속의 변수와 메소드 ※ 인스턴스 메소드는 클래스 맴버에 접근 할 수 있다. 클래스 메소드는 ..
생활코딩 - Java(객체지향프로그래밍)
·
Java & Spring/Java
■ 객체지향 □ 문법 객체지향을 편하게 할 수 있도록 언어가 제공하는 기능을 익히는 것이다. 이러한 기능들은 if, for문처럼 문법적인 구성을 가지고 있다. 이 문법을 이해하고, 숙지해야 객체를 만들 수 있다. 객체를 만드는 법에 대한 학습이라고 할 수 있다. □ 설계 좋은 객체를 만드는 법이다. 이것을 다른 말로는 설계를 잘하는 법이라고 할 수 있다. 좋은 설계는 현실을 잘 반영해야 한다. 현실은 복잡하다. 하지만 그 복잡함 전체가 필요한 것은 아니다. □ 부품화 프로그래밍은 정신적인 활동이다. 정신적인 것은 실체가 없고, 무한하고, 유연하다. 정신의 이러한 특성은 때로 오해나 모순 같은 문제점을 유발한다. 소프트웨어도 이러한 문제점을 그대로 상속받는다. 이러한 문제점을 극복하기 위한 노력 중의 하나..
생활코딩 - Java(입력과 출력)
·
Java & Spring/Java
1. String[] args String[] : 문자열을 담을 수 있는 배열이다. args : 변수 (String[] args) : main메소드의 파라미터(입력값) void : main의 출력값이 존재하지 않는다. 2. 콘솔환경에서 실행방법 cmd(명령 프롬포트) 실행 cd 경로 입력(최상위 디렉토리로 이동) dir/w, dir을 통해 디렉토리 확인 java -cp bin(class가있는 디렉토리) org.opentutorials.javatutorials.io.(class파일 패키지 경로)InputDemo(실행시킬 class파일) 3. 이미 실행중인 프로그램에 입력을 받는법 □ scanner 출처 : 생활코딩 유튜브 : https://www.youtube.com/watch?v=54hrXAyYUGo&l..
생활코딩 - Java(메소드)
·
Java & Spring/Java
1. 메소드의 정의와 호출 2. main메소드 → 약속(단순암기) main 메소드는 규칙이다. 무언가를 만들려면 반드시 public static void main(String[] args)가 이끄는 중괄호 안에 실행되기를 기대하는 로직을 위치시켜야 한다. 3. 입력과 출력 □ 입력 public static void numbering(int limit) 에서(int limit)은 매개변수(parameter) numbering(5)은 인자(argument) □ 출력(return) numbering 함수를 정의하고 인자값을 받아 output을 retrun 출처 : 생활코딩 유튜브 : https://www.youtube.com/watch?v=54hrXAyYUGo&list=PLuHgQVnccGMCeAy-2-llh..
생활코딩 - Java(배열)
·
Java & Spring/Java
1. 배열(Array) String[] : String(데이터타입) [](의 그룹) classGroup : 변수 2. for-each 잦은 반복문과 배열의 조화로인해 생겨난 문법 배열 members의 모든 요소들을 반복하여 변수 e에 대입 3. 반복문의 오류 □ 배열의 범위 밖 □ 배열의 한계 배열은 초기화할 때 크기를 정한다. 따라서 해당 크기 이상의 값을 넣을 수 없다. 출처 : 생활코딩 유튜브 : https://www.youtube.com/watch?v=pegfdsD1IY4&list=PLuHgQVnccGMCeAy-2-llhw3nWoQKUvQck&index=48
생활코딩 - Java(조건문, 논리연산자, 반복문)
·
Java & Spring/Java
□ 조건문 1. if 조건문 □ 기본 □ if else, else if □ if 중첩 2. switch 조건문 □ 논리연산자 1. and( && ) &&(and)는 좌항과 우항의 값이 모두 참(true)일 때 참이 된다. 2. or( || ) ||(or)는 좌우항 중에 하나라도 true라면 전체가 true가 되는 논리 연산자다. id가 "egoing", "k8805", "sorialgi" 중 하나(or) 이면서(and) pw가 "111111"이면 true 출력 3. not( ! ) !true = false !false = true 처럼 연산된다 □ 반복문 1. while문 2. for문 for (int i = 0; i < 10; i++)에서 각 항의 의미 int i = 0 : 시작 i < 10 : 조건 ..