Language/Java

Language/Java

자바의 상속 - 1

오늘은 자바에서 가장 중요한 것들 중 하나인 상속에 대해 적어보려 한다. 먼저 상속이 뭘까? 상속은 다른 클래스의 설계도를 가져와 새로운 기능을 추가하는 기법이라고 할 수 있겠다. 이 상속 관계에 대한 호칭은 언어마다 다른데 주로 사용되는 호칭을 몇 개 나열해보면 상위 - 하위 부모 - 자식 슈퍼 - 서브 정도가 있겠다. 자바에서 공식적으로 사용하는 호칭은 슈퍼 - 서브인데 개발자들은 부모 - 자식으로도 많이 얘기한다고 들었다. 상속받은 클래스(자식)의 객체를 만들면 자동으로 상속해준 클래스(부모)의 객체도 내부에 같이 생성된다. 이러다 보니 내가 상속받아온 클래스의 멤버를 마음대로 사용 가능하다. 하지만, 저번 글에서도 소개했듯이 객체지향 프로그래밍에서는 멤버 변수를 직접 .연산자를 통해 제어하는 것을..

Language/Java

자바 클래스 안에 다른 클래스의 참조 변수가 있는 상황

오늘은 제목 그대로의 상황을 살펴보도록 하겠다. 먼저 Main.class와 별개로 Person, Member라는 클래스를 만들었고 Member 클래스에는 Person 클래스의 참조변수가 있다고 염두해두자. 이 예제는 임의로 같은 패키지안에서 작업했다. 먼저 Person 클래스이다. public class Person { String name; int age; //생성자 : Constructor public Person() { name = "익명"; age = 0; } public Person(String name, int age) { this.name = name; this.age = age; } //멤버값을 출력하는 메소드 void show() { System.out.println("name : " +..

Language/Java

static 키워드

static 키워드는 C언어에서도 있던 키워드이다. static은 그럼 대체 왜 사용하는걸까? 첫 번째로 객체를 생성하지 않고도 변수를 사용하고 싶을 때 사용한다. 이 녀석은 객체가 생성되지 않아도 먼저 존재하기 때문이다. 두 번째는 같은 클래스의 객체가 모두 같은 값을 공유하고 싶을 때 사용한다. 그럼 static 키워드는 대체 어디에 쓸 수 있을까? 당연히 변수에 쓸 수있다. 그리고 객체를 생성하지 않고도 사용할 수 있는 메소드가 있다. 이 녀석은 당연히 static 메소드이다. 또, class에도 static을 붙일 수 있다. 단, inner class일때만 가능하다. Test class라는 예를 통해 static 키워드에 대해 조금 더 자세히 알아보자 public class Test { publi..

Language/Java

자바의 생성자(Constructor)

오늘은 생성자에 관해 글을 써보려한다. 먼저, 생성자는 뭘까? 생성자는 객체가 생성될 때 자동으로 발동하는 특별한 메소드이다. 대부분 객체를 생성하면 언제나 멤버 값을 설정하는 작업이 선행된다. 바로 이전 글에 썼던 Setter 메소드를 통해 이 작업을 하게 될 것이다. Person p = new Person(); p.setMember("sam", 20); ... 그런데 위처럼 매번 객체를 new를 통해 생성하고 다음 줄에서 멤버 값을 설정하고 이 작업을 계속 반복하면 너무 짜증이 날 것이다. 생각해보면 변수도 만들면서 값을 초기화하면 코드가 더 간결했었다 int a; a = 1; int b = 2; 위 코드처럼 a보다 b의 코드가 더 간결하다. 객체도 생성하면서 값을 초기화하면 코드가 더 간결해진다 가..

Language/Java

자바의 접근 제한자(Access Modifier)

오랜만에 Java에서의 접근 제한자(Access Modifier)라는 녀석을 소개해보겠다. 먼저 접근 제한자가 생긴 이유에 대해 생각해보자. 흔히 자바는 대표적인 OOP(Objective Oriented Programming) 객체 지향 프로그래밍이라고 한다. 정보은닉을 통해 외부에서는 기능만을 사용하고 안에 있는 값들은 마음대로 건드리지 못하게 하는 것이 기본이다. 접근제한자의 4가지 종류를 보안이 강한 순서대로 나열해보겠다. 1. private 2. (default) 3. protected 4. public 먼저 private 접근 제한자는 보안이 가장 강력한 녀석이다. 이 접근 제한자가 붙어있는 멤버변수(필드), 멤버함수(메소드)는 본인 클래스 내부에서만 접근이 가능하다. 두 번째로 default ..

Language/Java

자바의 변수 종류

먼저 바로 수업 시간에 사용했던 예제 코드를 공유해보겠다. public class VariableTest { //자바에서 변수의 종류 [멤버변수(필드), 지역변수, 매개변수, 정적변수] //멤버변수 - class {..} 안에 선언된 변수 int a; //자동 0으로 초기화 int b; //지역변수 - 메소드 {..} 안에 선언된 변수 void aaa() { int k; //지역변수 : 자동 초기화되지 않는다 -- 쓰레기값 System.out.println(a); //System.out.println(k);//error - 쓰레기는 출력 불가 } void bbb() { //클래스의 멤버변수는 클래스 영역 어디서든 인식가능 a = 50; System.out.println(a);//50 //aaa()메소드 ..

Language/Java

자바에서의 메소드 - 2

이번 글에서는 자바에서 자주 쓰이는 메소드의 형태를 소개하려고 한다. 오버로딩에 관한 예제 코드이다. 나는 사칙 연산을 Main class에서 하려고 하는데 이 때 Calculator라는 클래스를 새로 설계하여 사용할 것이다. Calculator.java public class Calculator { //멤버 메소드 //더하기 메소드 int sum(int x, int y) { return x + y; } //빼기 메소드 int subtract(int x, int y) { return x - y; } //곱셈 메소드 int multiply(int x, int y) { return x * y; } //나눗셈 메소드 int divide(int x, int y) { return x / y; } //실수형 값에 ..

Language/Java

자바에서의 메소드

이번에는 자바에서 메소드를 만들고 사용하는 내용을 다뤄보려 한다. 오늘은 내가 수업 때 사용한 자바 코드로 내용을 대체하려 한다. 각 문장마다 주석을 달아두어 이해하기에 큰 어려움을 없을 것이다. Main.java public class Main { public static void main(String[] args) { // TODO Auto-generated method stub //학생 성적 관리 프로그램 //[이름, 국어, 영어, 평균] String name; int kor; int eng; double aver; name = "sam"; kor = 80; eng = 70; aver = (double)(kor+eng)/(double)2; //각각의 값을 저장하는 변수들을 개별로 만들면 관리도 어렵..

Language/Java

자바의 패키지

오늘은 자바의 패키지에 관해 다뤄보려고 한다. 이제 자바를 배운지 얼마 안된 우리는 패키지가 뭔지 이제 처음 들어본 사람이 많을 것이다. 먼저 패키지의 필요성에 대해 살펴보자. 사용자 정의 클래스를 만들다보면 클래스 이름에 대한 고민을 하게 된다. 그 클래스 이름은 그 필드와 메소드를 특정할 수 있는 이름을 선정하여 지정한다. 그러다보면 원하지 않게 같은 이름을 지정할 수도 있다. 이 때 같은 이름의 문제를 해결하기 위한 문법이 package이다. 물리적인 폴더 구분을 통해 같은 이름의 class를 구별하도록 한 것이다. 그리고, 우리는 지금까지 자바를 조금씩 배우며 알게 모르게 사용했던 패키지가 있다. Scanner, Random, String과 같은 클래스들이다. Scanner같은 경우에는 java안..

Language/Java

자바의 클래스 소개

자바는 객체지향 프로그래밍이라고들 한다. 그럼, 객체는 뭘까? 고유한 기능(동작)과 값(데이터)을 가진 녀석이라고 할 수 있다. (변수[필드] + 함수[메소드]) 우리가 몇 번 사용해봤던 Random객체는 간단히 임의의 값을 만들어 내는 능력을 가진 녀석. String객체는 문자열을 관리하는 능력을 가진 녀석. Scanner객체는 키보드로 입력된 값을 자료형 별로 받아주는 능력을 가진 녀석. 으로 요약해볼 수 있겠다. 위 Random, Scanner, String이라는 객체의 능력을 구분하는 명칭을 class라고 한다. 즉, 객체의 종류를 class라고 한다. 또는 객체의 자료형을 class라고 한다. (변수의 종류를 자료형이라고 하듯) 자바에서는 이러한 클래스들을 기능별로 약 2000여개 정도 만들어두..

BonusTrack02.dev
'Language/Java' 카테고리의 글 목록