Java 82

Overriding

오버라이딩이란 재정의이다 부모클래스에서 어떤 메소드를 어느정도 변경해서 사용하고 싶을 때 사용한다 적용방법은 자식 클래스 내에서 다시 정의를 내려주면 된다 *광범위한건 부모 클래스에서 정의를 내리고 부분 부분 수정할 부분은 오버라이딩 기능으로 재정의하자 오버라이딩할 때 중요한 점은 상속해주는 부모 클래스 메소드와 오버라이딩 하는 메소드를 서로 일치해줘야한다는 것이다 1번은 데이터 타입을 먼저 int로 일치시켰고 부모 클래스에 있는 메소드에도 return 값을 주었다 하지만 이 방법을 사용하면 avg 메소드 안의 로직이 중복 되기 때문에 2번 방법을 주로 사용한다 2번은 return은 부모 자식 모두 그대로 두고 super를 통해 부모 클래스의 avg 메소드에 접근을 한다 이를 통해 코드의 중복을 없앴고 ..

Java/자바 2021.01.14

상속과 생성자

상속 객체는 변수와 메소드를 상속하고 상속 받을 수 있다 상속한 부모 클래스는 상위(Upper)클래스 또는 기초(Base)클래스라고 부른다 상속 받는 자식 클래스는 하위(Sub)클래스 또는 유도(Derived)클래스라고 부른다 상속을 받으면 이미 쓰여진 메소드, 변수 (부품)을 재활용할 수 있기 때문에 효율적이다 *중복의 제거라는 프로그래밍이 추구하는 가치와 일맥상통한다 또한 상속을 받지 않고 원래 코드에서 수정을 한다고 했을 때 로직이 본인이 짠 거라면 상관이 없지만 다른 사람의 코드를 가지고 왔다면 컨트롤 하기가 너무 힘들어진다 *원본 코드가 업데이트 됬을 경우 내가 수정한 코드는 없어진다 -> 이걸 인지 못할 수도 있다 class SubstractionableCalculator extends Cal..

Java/자바 2021.01.14

유효범위

자바에서 유효 범위란 어떤 변수가 어디까지 영향을 미치는지를 말한다 한 메소드 안에서 int i = 0; 이라고 선언이 됬으면 이 변수는 그 메소드 안에서만 효력이 발생된다 클래스 변수 static 변수는 전역변수라고도 하고 인스턴스 변수 non static 변수는 지역변수라고도 한다 전역변수는 클래스 안에 있는 모든 변수와 메소드에 영향을 미치고 지역변수는 그 중괄호 안에 있는 변수와 메소드 안에 있는 코드들에만 영향을 미친다 *변수를 선언한다는 건 그 우효범위를 설정하는 것과 같다 C3라는 클래스를 만들고 그 생성자의 복제품을 c1이라는 인스턴스에 대입 c1 인스턴스에 포함 되어 있는 m() 메소드를 호출 m 메소드는 변수 v를 호출하는데 앞에 this.이 붙어 있으므로 전역변수인 정수 10을 출력한..

Java/자바 2021.01.13

클래스와 인스턴스 그리고 객체

클래스는 설계도 인스턴스는 그 제품이다 객체는 변수와 메소드의 집합체이다, 객체를 프로그램 안에 있는 작은 프로그램으로 보자 연관되어 있는 것들을 묶고 반복되고 중복되는 걸 제거하기 위해 만들어졌다 클래스와 인스턴스가 없다면 많은 코드들이 중구난방으로 섞일 수 있어 유지보수가 어렵다 이 문제를 해소하기 위해 언어 개발자들이 만든 개념이 객체지향프로그램이다 변수는 객체의 상태, 메소드는 행위 Calculator c = new Calculator(); 객체를 생성한다는 건 우리가 데이터타입을 직접 만드는 거라고 볼 수 있다 Calculator라는 클래스가 들어갈 수 있는 메모리를 확보해놓고 생성 메모리에 c라는 변수가 들어갈 수 있는 공간을 확보해 놓고 그 안에 Calculator 클래스를 복제해서 대입 인..

Java/자바 2021.01.13

객체지향프로그래밍

프로그램이 작을 때는 하나의 시스템 안에서 오류 없이 구동이 되지만 프로그램이 인간의 인지 능력으로는 파악할 수 없을 정도로 커지면서 객체지향프로그래밍 개념이 나오게 됬다 객체는 간단히 말해서 부품화를 한다고 말할 수 있다 부품화를 해서 한 곳에만 쓰는게 아니고 다른 필요한 곳에 쓸 수 있다는 장점이 있다 변수와 메소드가 대표적인 부품화의 예이다 메소드는 리턴 값을 통해 진짜 부품처럼 필요한 곳에 가져다 쓸 수 있다 예를 들어 웹사이트 하나는 댓글 기능을 가진 객체, 본문을 구성하는 객체 등 다양한 객체들이 레고 처럼 조립 되어 있다 컴퓨터는 초장기에 본체 모니터 키보드가 붙어 있었지만 지금은 본체, 모니터, 키보드, 마우스 등으로 부품화 되었다 캡슐화 / 은닉화 자바 프로그램의 특징으로 내부의 동작 방..

Java/자바 2021.01.12

메소드

메소드는 함수라고 볼 수 있는데 자바에선 메소드라고 불린다 메소드는 기계의 부품처럼 만들어놓고 리턴을 통해 원하는 곳에 어디든 사용할 수 있기 때문에 코드양을 줄일 수 있고 유지 보수가 쉬워진다 자바와 개발자 사이에는 만들고자 하는 코드들을 main안에 넣어야한다는 약속이 되어있다 위 예시에서 limit는 매개변수 (parammeter) 이고 숫자 5는 인자 (argument) 이다 매개변수와 인자를 통해 가변적인 것과 고정적인 걸 나눠 좀 더 좋은 코드를 만들 수 있다 여러개의 인자를 넣고 싶다면 , 를 활용한다 인자 1, 5는 매개변수 initm limit에 담긴다 매개변수를 바탕으로 코드가 실행이 되고 이 값을 output에 담아 리턴을 통해 main 안에 있는 numbering 메소드로 반환되고 ..

Java/자바 2021.01.12

배열

배열이란 학교에서 반을 나누고 나라에서 초, 중, 고등학교를 나누듯이 연관되어 있는 element들끼리 모아서 그룹핑 해주는 것이다. #String[] 2학년1반 = {김다미, 조현, 신세경, 임주경, ....} int [] result = int[9]; 정수가 들어가는 정수 타입 배열이고 0~8 총 9개의 메모리 공간을 사용한다 만약 8을 넘어가는 9번째 데이터를 입력하거나 출력하려고 하면 오류가 날 수 있다 그렇다고 최대치인 100을 지정하면 낭비되는 데이터가 많기 때문에 조심하자 *9평만 있으면 되는데 서울에서 100평짜리 부동산을 임대하는 느낌 특히 반복문과 같이 많이 사용하는 짝궁이다 둘이 자주 사용하기 때문에 while문의 간소화 버전인 for이 나왔듯이 for each문이 나왔다 위 예시 참고

Java/자바 2021.01.11

조건문, 반복문

조건문 if(조건) { 조건에 맞으면 코드 실행 } if else(조건) { 조건에 맞으면 코드 실행} else { 설정한 조건에 안맞으면 코드 실행 } 반복문 int i = 0; 초기화 while (i < 10 종료 조건 설정) { 조건에 맞으면 코드 실행 i = i +1; 반복 횟수 } 종료 조건 부합 시 반복문 종료 후 밑에 코드 실행 for(i = 0; i < 10; i++) {조건에 맞으면 코드 실행 } if(i == 5)break; i가 5와 같아지면 반복문 종료continue; i가 5와 같아지면 5는 무시하고 6부터 다시 실행

Java/자바 2021.01.11

== vs .equals

==은 데이터가 있는 주소를 비교하고 .equals은 데이터가 포함하고 있는 값을 비교한다 결과는 true, false 두가지 값만 존재한다 We can use == operators for reference comparison (address comparison) and .equals() method for content comparison. In simple words, == checks if both objects point to the same memory location whereas .equals() evaluates to the comparison of values in the objects. 비교연산자는 어디서 왔는지 (주소 비교) 메소드 .equals()는 그 데이터가 무엇인지 비교한다 ..

Java/자바 2021.01.08