짱짱해커가 되고 싶은 나

03. Java 정리 본문

모바일

03. Java 정리

동로시 2021. 2. 15. 15:57

안드로이드를 개발할 때 주로 Java, 코틀린 등을 사용한다.

 

우선, 나는 알고 있는 언어인 Java를 이용해 안드로이드를 공부하고자 한다.

본격적으로 공부하기 앞서, Java를 안쓴지 너무 오래됐고 ㅠ 잘 모르는 것 같기 때문에 다시 복습~ ^^

 

Java : 객체지향 프로그래밍 언어(OOP)

1991년 선마이크로시스템스의 제임스 고슬링이 C 언어를 모델로 가전제품에 적용하기 위한 연구를 시작

- 간결한 구문 : 포인터와 데이터 형식을 없애서 C++에서 발생하던 메모리 관리 문제를 대폭 해결

- 명료한 객체지향언어  : Object 클래스에서 모든 클래스를 파생, 인터페이스를 통해 다중 상속 문제 해결, 연산자 오버로딩 지원X

- 이식성이 높으며 기계 중립적 : Java Virtual Machine이라는 소프트웨어 덕에 다양한 OS에서 동작 가능. 

- 분산 처리 X

- 멀티 스레드 언어

 

+  메모장에서 실행

.java 저장 -> javac.exe로 컴파일 -> .class 파일 생성 -> java.exe -> .class 파일 실행

 

* 자료형

boolean, byte 형태 지원

 

* 반복문

for 문에서 for(변수: 배열명) 의 형태로도 사용할 수 있다.

== for(int i=0; i<배열명.length; i++); 

 

* 예외 처리 try - catch - finally

 

* 클래스(필드, 메소드) -> 인스턴스

 

* 생성자

인스턴스를 생성해서 파라미터를 넘기면 데이터가 생성자로 넘어간다.

데이터형은 생략

 

* 메소드 오버로딩

클래스 내의 메소드 이름이 같아도 파라미터의 개수나 데이터형이 다르면 여러 개를 선언할 수 있는 것을 의미

 

* static - 정적 필드, 정적 메소드, 상수 필드 ex) Math.PI, Math.pow()

정적 필드 : 인스턴스를 생성하지 않고 클래스 자체에서 사용되는 변수가 필요할 경우(this안씀), 클래스명.필드명 으로 접근

정적 함수 : 인스턴스 없이 클래스명.메소드명() 으로 사용 가능

상수 필드 : final static 으로 사용, 보통 대문자로 이름 구성

 

* 클래스 상속(inheritance) - super class, sub class / 부모 클래스, 자식 클래스 & 메소드 오버라이딩

기존 클래스가 가지고 있는 것을 그대로 상속 받으면서 필요한 필드나 메소드를 추가로 정의할 수 있다. (extends)

자식 클래스는 부모 클래스를 상속받았기 때문에 별도의 선언이나 정의 없이 부모 클래스의 필드와 메소드를 사용할 수 있다.

그리고 부모 클래스를 무시하고 새로 정의하는 메소드 오버라이딩도 가능하다.

클래스 앞에 final을 쓰면 상속이 불가능하다.

 

* abstract - 추상 클래스, 추상 메소드

추상 클래스 : 인스턴스화를 금지하는 클래스

추상 메소드 : 메소드 본체가 없는 메소드, 추상 메소드를 포함하는 클래스는 추상 클래스여야 한다.

why? 공통적으로 사용되는 기능을 추상 메소드로 선언하고 추상 클래스를 상속 받은 후에 추상 메소들르 오버라이딩해서 사용

 

* 다형성(polymorphism)

자신의 서브클래스에서 생성한 인스턴스도 클래스 변수에 대입할 수 있는 것

-> 하나의 변수에 여러 종류의 인스턴스 대입 가능

 

* 인터페이스(interface) - 구현 시 implements

body가 비어있는 메소드들의 형태로 구성

class 대신 interface 키워드로 정의, 내부에는 추상 메소드 선언, final 변수만 가능, 생성자 사용x

java는 다중 상속을 지원하지 않는 대신 인터페이스를 사용해 다중 상속과 비슷한 기능을 할 수 있다. (extends & implements)

 

Tip ) 추상 클래스는 공통적인 개념을 다룰 때, 인터페이스는 공통적인 기능을 다룰 때의 느낌~

 

* 익명 내부 클래스(anonymous inner class)

new 부모클래스/인터페이스 이름(){};

 

* 제네릭스(Generics) - <String> , <Integer>, <Double> 등

데이터 형식의 안전성 보장 가능

 

'모바일' 카테고리의 다른 글

04-2. 위젯  (0) 2021.02.15
04-1. View  (0) 2021.02.15
02-3. BaseApp2 구현  (0) 2021.02.15
02-2. Android 프로젝트 구성  (0) 2021.01.28
02-1. 여러 기능을 하는 버튼 애플리케이션 구현  (0) 2021.01.23
Comments