본문 바로가기

Language28

[Java] final 을 알아보자 final이란? final은 클래스, 메소드 , 변수에 선언할 수 있는 예약어로 불변처리를 할 때 사용한다. final예약어를 사용하면 대상에 대한 변경 또는 확장을 금지할 수 있다. 아래의 예제를 통해서 이해해보자. 클래스에 final을 선언한 예제 public class Animal{} // (1) public final class Dog extends Animal{} // (2) public class poodle extends Dog{} // (3) 에러 상속 불가 (1) Animal이라는 클래스를 (2)의 Dog가 상속받았다. (2) Dog클래스는 final로 선언하였다. (3) (2)가 final로 선언하였기 때문에 불변의 상태가 되어 상속이 이루어지지 않는다. 메소드를 final로 선언한 예.. 2021. 8. 22.
[Java]추상클래스와 인터페이스(차이,공통점) 추상클래스란? 추상클래스(abstract class)란 클래스 내부에 추상적인 기능을 가질 수 있는 클래스를 말한다. 추상적으로 메소드를 선언하여 상속을 통해서 자식클래스에서 완성하도록 유도하는 클래스이다. 상속을 위한 클래스이기 때문에 객체를 따로 생성할 수 없다. 추상클래스의 특징 객체(인스턴스) 생성이 불가능하다. class 앞에 "abstract" 예약어를 사용하여 추상클래스라는 것을 명시해야 한다. 추상메소드를 가질 수 있다. abstract으로 선언된 메소드가 하나라도 존재한다면, 그 클래스는 반드시 abstract으로 선언되어야 한다. 추상클래스는 단일상속만 가능하며 일반 변수, 메소드를 가질 수 있다. 추상메소드의 특징 추상클래스 내부에서만 구현할 수 있다. 메소드에 "abstract" 키.. 2021. 8. 21.
[Java] JAVA 8 특징 📝교육원을 다닐때 강사님께서 알려주신 자바버전이 8버전이었다. 왜인지는 몰랐다. 그 당시 11도 나와있었지만, 어떠한 이유에서 자바 8버전을 사용하라고 하셨고, 난 딱히 궁금증을 품지않고 이게 자바8버전이구나~! 하고 아무생각없이 사용했다,,, 프로젝트를 진행할 때도 당연하듯이 8버전을 사용했다. 그런데 멘토님께서 Java 8버전에서 변경된 게 무엇이며, 특징은 무엇일까요~? 라고 질문을 주셨을 때 나 자신을 반성하게 되었다... 정말 아무것도 모르고 사용하고 있었구나 싶었다. 다시 위의 질문을 받았을 때 벙찌지 않게 오늘은 Java 8의 특징을 알아보도록 하자. Java 8 특징 1. 람다 표현식(lambda expression) : 함수형 프로그래밍 2. Method Reference : 메서드 정의.. 2021. 8. 18.
[Java] 다형성(polymorphism)이란? 📚 멘토님이 다형성은 무엇인지, 왜 사용하는지에 대해서 물어보셨는데 머릿속으로는 뭔지 그려지는데 막상 대답을 하려니 내가 아는 내용이 맞는지 의심이 들었고, 현재 알고있는 내용도 어떻게 설명해야하는지 말문이 턱 막혔다. 알고있다고 생각했지만 대답을 못했던,,^^ 자바에서 매우매우 중요한 OOP(객체지향언어)의 특징 중 하나인 다형성에 대해서 알아보도록 하자! 다형성(polymorphism)이란? 객체지향개념의 중요한 특징 중의 하나인 다형성은 '하나의 객체가 여러 가지 타입을 가질 수 있는 것'을 의미한다. 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현했다. 다형성은 상속, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나다.. 2021. 8. 15.
[Java] 상속(Inheritance)에 대해서 📚 이전에 오버로딩과 오버라이딩의 차이점에 대해서 글을 작성했다. 이번 글에서는 오버라이딩에 대해서 더 확실하게 이해하기 위해서 상속에 대한 정리를 해보려고 한다. 자바에서 상속이란? 일반적으로 생각했을 때 상속이란 무언가를 부모에게 물려받는 것을 말한다. Java에서의 상속도 비슷하다. 부모클래스의 변수와 메소드를 상속을 통해 자식클래스에서 사용할 수 있게 해준다. 조금 더 깊게 말하자면, 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다.(확장의 개념) 이때 기존에 정의되어 있던 클래스를 부모클래스(parent class) 또는 상위클래스(super class)라고 부르며, 상속을 통해 새롭게 작성되는 클래스를 자식클래스(child class) 또는 하위클래스(sub.. 2021. 8. 14.
[Java] 오버라이딩(Overriding)과 오버로딩(Overloading)의 차이점 오버로딩(Overloading)이란? 메소드도 변수와 같이 같은 클래스내에서 구분이 필요하기 때문에 메소드 명이 각기 달라야한다. 하지만 자바에서는 메소드명이 같더라도 매개변수의 개수 또는 타입이 다르면 같은 이름을 사용해서 메소드를 정의할 수 있다. 이처럼 한 클래스 내에 같은 이름의 메소드를 여러개 정의하는 것을 '오버로딩(Overloading)'이라고 한다. 오버로딩(Overloading)의 조건 메소드 이름이 같아야 한다. 매개변수 또는 타입이 달라야한다. 예제 public Class Overloading{ // 매개변수 미존재 void play() { System.out.println("매개변수 미존재"); } // 매개변수 int형 1개 void play(int a) { System.out.p.. 2021. 8. 11.
[Java] 변수(Variable)와 자료형(Data type) 자바에서의 변수(Variable) 변수란? 내용을 어딘가에 담아두어야 할 때 사용되는 것을 "변수(variable)"라고 부른다. 변수의 종류 지역 변수 local variables : 중괄호 내에서 선언된 변수 매개 변수 parameters : 메소드에 넘겨주는 변수 인스턴스 변수 instance variables : - 메소드 밖에 , 클래스 안에 선언된 변수. 앞에는 static이라는 예약어가 없어야 한다. 클래스 변수 class variables : 인스턴스 변수처럼 메소드 밖에, 클래스 안에 선언된 변수 중에서 타입선언 앞에 static이라는 예약어가 있는 변수 public class VariableTypes{ int instanceVariable; static int classVariable;.. 2021. 7. 18.
[Java] 삼항연산자 알아보기 삼항연산자란? if-else문과 비슷하지만 if-else문보다는 단조롭게 표현할 수 있는 연산자라고 생각하시면 될 것 같다. 기본적으로 if-else를 쓰게된다면 최소 5줄의 코드가 생성된다. if(조건문){ }else{ } 삼항연산자의 예제를 보도록 하자 //if-else 문 int a=100; int b=200; int c; if(a 2020. 11. 25.