728x90
반응형

전체 글 328

[View binding]

View binding이란? View와 상호작용하는 코드를 쉽게 작성할 수 있도록 도와주는 기능입니다. 앱 모듈에서 View binding 기능을 활성화하면, 모듈 내의 각각의 XML 레이아웃 파일에 대한 바인딩 클래스를 자동적으로 생성합니다. 바인딩 클래스의 인스턴스를 통해 레이아웃에 존재하는 모든 View들을 ID로 직접 참조할 수 있습니다. View binding vs findViewById View binding에는 findViewById에 비해 다음과 같은 장점이 있습니다. Null safety: View binding은 view에 대한 직접참조를 생성하기 때문에 Null pointer exception에 대한 위험이 없습니다. 또한, 레이아웃의 일부 configuration에만 view가 있는..

Android/Study 2022.08.12

내부 클래스 Inner Class

내부 클래스 Inner Class란? 하나의 클래스 내부에 선언된 또 다른 클래스를 의미합니다. 두 클래스가 긴밀한 관계에 있을 때 한 클래스를 다른 클래스의 내부 클래스로 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다는 장점이 있습니다. 또한, 외부에서 불필요한 클래스를 감추는 캡슐화를 통해 코드의 복잡성을 줄일 수 있습니다. 내부 클래스의 종류 인스턴스 클래스 Instance Class 외부 클래스의 멤버변수 선언위치에 선언하며, 외부 클래스의 인스턴스 멤버처럼 다뤄진다. 외부 클래스의 인스턴스 멤버들과 관련된 작업에 사용될 목적으로 선언된다. 정적 클래스 Static Class 외부 클래스의 멤버변수 선언위치에 선언하며, 외부 클래스의 static 멤버처럼 다뤄진다. 외부 클래스의 s..

Java 2022.05.24

추상화 Abstraction

추상화 Abstraction란? 클래스간의 공통점을 찾아내서 공통의 조상을 만드는 작업을 말합니다. 상속이 자손 클래스를 만드는데 조상 클래스를 사용하는 것이라면, 추상화는 기존 클래스의 공통부분을 뽑아내서 조상 클래스를 만드는 것이라고 할 수 있습니다. 추상화 적용 전 class Marine { int x, y; void move(int x, int y) { //지정된 위치로 이동 ... } void stop() { //현재 위치에 정지 ... } void stimPack() { //스팀팩 사용 ... } } class Tank { int x, y; void move(int x, int y) { //지정된 위치로 이동 ... } void stop() { //현재 위치에 정지 ... } void chan..

Java 2022.05.24

다형성 Polymorphism

다형성 Polymorphism이란? 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있는 것을 말합니다. 부모 클래스 타입의 참조변수로 자식 클래스의 인스턴스를 참조할 수 있습니다. 다형성은 상속, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나입니다. 자바에서는 다형성을 통해서 부모 클래스 타입의 참조변수로 자식 클래스의 인스턴스를 참조할 수 있습니다. 참조변수가 사용할 수 있는 멤버의 개수는 참조하는 인스턴스의 멤버 개수보다 같거나 적어야 합니다. 조상 클래스의 멤버 개수는 자식 클래스의 멤버 개수보다 항상 적거나 같습니다. 즉, 자식 클래스 타입의 참조변수로 부모 클래스의 인스턴스를 참조할 수 없습니다. 참조변수의 타입이 참조변수가 참조하고 있는 인스턴스에서 사용할 수 있는..

Java 2022.05.23

제어자 Modifier

제어자 Modifier란? 제어자는 클래스, 변수, 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여합니다. 여러 제어자를 조합하여 사용하는 것이 가능하나, 접근 제어자의 경우 하나만 사용할 수 있습니다. static - 클래스의, 공통적인 대상 의미 멤버변수 - 모든 인스턴스에서 공통적으로 사용되는 클래스 변수가 된다. - 클래스 변수는 인스턴스를 생성하지 않고도 사용 가능하다. - 클래스가 메모리(메서드 영역)에 로드될 때 생성된다. 메서드 - 인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 된다. - static 메서드 내에서는 인스턴스 멤버들을 직접 사용할 수 없다. 초기화 블럭 - 클래스 변수를 초기화 하는 블럭이다. - 인스턴스를 생성하지 않아도 초기화 블럭이 수행된다. cl..

Java 2022.05.20

super와 this

this 생성자 this() 생성자에서 같은 클래스의 다른 생성자를 호출할 때 this(), this(매개변수)를 사용합니다. 한 생성자에서 다른 생성자를 호출 할 때는 반드시 첫 줄에서만 호출이 가능합니다. 왜냐하면 생성자 내에서 초기화 작업도중 다른 생성자를 호출하게 되면, 호출된 다른 생성자 내에서도 멤버변수들의 값을 초기화하기 때문에 호출하기 이전에 작업한 초기화가 무의미해지기 때문입니다. 인스턴스 변수 this 인스턴스 변수를 생성자 내에서 호출할 떄에는 this라는 참조변수를 활용하면 됩니다. this는 멤버변수와 지역변수의 이름이 같을 때 구분하기 위해서 사용됩니다. this에는 인스턴스의 주소가 저장되어 있으며 모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재합니다. super 인스턴스 ..

Java 2022.05.20

상속 Inheritance

상속 Inheritance란? 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것입니다. 자식 클래스는 부모 클래스의 모든 멤버를 상속 받습니다. 새로운 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 extends와 함께 써주면 됩니다. 상속은 기존 클래스를 이용해 새로운 클래스를 만들 수 있기 때문에 코드의 중복을 제거하고 재사용성을 높이며, 코드를 공통적으로 관리할 수 있기 때문에 프로그램의 생산성과 유지보수에 좋습니다. 부모 클래스(Parent Class): 조상 클래스, 상위 클래스(Super Class), 기반 클래스(Base Class) 자식 클래스(Child Class): 자손 클래스, 하위 클래스(Sub Class), 파생된 클래스(Derived Class) 생성자와 초기화 블럭은..

Java 2022.05.20

오버로딩(Overloading)과 오버라이딩(Overriding)

오버로딩 Overloading이란? 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 오버로딩(또는 메서드 오버로딩)이라고 합니다. 즉, 기존에 없는 새로운 메서드를 정의합니다. class Calculator { int add(int a, int b) { return a+b; } long add(long a, long b) { return (long)(a+b); } } 오버로딩의 조건 메서드 이름이 같아야 합니다. 매개변수의 개수나 타입이 달라야 합니다. 오버로딩된 메서드들은 매개변수에 의해서만 서로 구별할 수 있기 때문에 반환 타입은 아무런 영향을 주지 않습니다. 즉, 반환 타입이 같든 다르든 상관없이 매개변수의 개수나 타입이 달라야 오버로딩의 조건이 성립합니다. 만약 가변인자(variabl..

Java 2022.05.19

객체지향 프로그래밍(OOP, Object-Oriented Programming)

객체지향 프로그래밍(OOP)이란? 사물의 속성과 기능을 데이터(변수)와 함수로 정의하여 생성한 객체들의 상호작용으로 프로그램 로직을 구성하는 프로그래밍 패러다임입니다. 프로그램을 명령어의 목록으로 보는 시각에서 벗어나서 실제 세계의 사물간 상호작용을 컴퓨터 속에 옮겨 넣고자 구현되었습니다. * 절차적 프로그래밍(PP, Procedural Programming) 절차적 프로그래밍은 단순히 순차적인 명령 수행이 아니라 루틴, 서브루틴, 메소드, 함수 등을 이용한 프로그래밍 패러다임입니다. 객체지향언어의 장점 1. 코드의 재사용성이 높고 유지보수가 용이합니다. 상속, 다형성의 특징을 이용해서 새로운 코드를 작성할 때나 기존 코드를 변경할 때 기존 코드를 활용하므로 시간과 비용면에서 효율적입니다. 2. 신뢰성이..

Java 2022.05.19

배열 Array

1. 1차원 배열 선언하기 타입[] 변수이름; int[] score; String[] name; 타입 변수이름[]; int score[]; String name[]; 배열을 선언하면 생성한 배열을 다루기 위한 참조변수를 위한 공간이 만들어 집니다. 아직 데이터를 저장할 수 있는 공간은 마련되지 않습니다. 생성하기 변수이름 = new 타입[길이]; score = new int[5]; name = new String[3]; 배열을 생성하면 값을 저장할 수 있는 공간이 만들어 집니다. 연산자 new에 의해 명시한 타입의 데이터를 저장하기 위한 메모리 공간이 길이만큼 생성됩니다. 배열의 길이는 양의 정수이어야 하며 최댓값은 int 타입의 최댓값으로 약 20억입니다. 또한, 배열의 길이는 0이 될 수 있습니다. ..

Java 2022.05.19
728x90
반응형