전체 글102 인터페이스 (Interface) 1. 인터페이스 - 다중 상속처럼 사용할 수 있는 기능 자바에서는 다중 상속이 불가능한데 인터페이스는 여러 개를 사용할 수가 있기 때문에 다중 상속처럼 사용할 수 있다. - 추상 메소드와 상수만으로 이루어짐 자바 8에 와서는 default 메소드와 static 메소드도 추가로 지원하고 있다. // 인터페이스 정의 접근제어자 interface 인터페이스 이름{ public static final 타입 상수이름 = 값; public abstract 반환타입 메소드이름(매개변수); } // 인터페이스 구현 class 클래스이름 implements 인터페이스이름{ } - 상속과 인터페이스 동시 사용 가능 - 인터페이스 두개 이상 사용 가능 2022. 3. 29. 추상 클래스 (Abstract Class) 1. 추상 메소드 (Abstract Method) - 자식 클래스에서 반드시 오버라이딩 해야하는 메소드 - 선언만하고 구현 내용이 없음 abstract void print(); 2. 추상 클래스 (Abstract Class) - 하나 이상의 추상 메소드를 포함하는 클래스 - 반드시 구현해야 하는 부분에 대해 명시적으로 표현 - 추상 클래스 자체는 객체 생성 불가 - 추상 클래스는 상속을 통해 구현 가능하다. abstract class 클래스명 { abstract void print(); } * 익명 클래스를 통해서 추상클래스의 추상메소드를 오버라이딩 가능 // Person이라는 클래스가 추상클래스일 때 Person person = new Person() { @Override void printInfo().. 2022. 3. 29. 다형성(Polymorphism) 1. 다형성 - 한 객체가 여러 가지 타입을 가질 수 있는 것 - 부모 클래스 타입의 참조 변수로 자식 클래스 인스턴스 2. instanceof - 실제 참고하고 있는 인스턴스의 타입 확인 class Person{} class Student extends Person{} // Student s1 = new Person(); 과 같이 하위타입에 상위 타입을 넣을 수 없다. Person p1 = new Student(); // 업 캐스팅 Student s1 = (Student) p1; // 다운 캐스팅 // 변수 instanceof 타입 , 변수가 타입의 인스턴스인지 알려줌 System.out.println(p1 instanceof Person); // true * 이거 관련해서는 SOLID 원칙의 LSP가.. 2022. 3. 28. 상속(Inheritance) 1. 상속 - 기존 클래스에 기능 추가 및 재정의하여 새로운 클래스를 정의하는 것 - 부모 클래스 : 상속 대상이 되는 기존 클래스 - 자식 클래스 : 기존 클래스를 상속하는 클래스 - 부모 클래스의 필드와 메소드가 상속되고 생성자,초기화 블록은 상속되지 않음 - 다중 상속은 불가능 - private, default 멤버는 자식 클래스에서 접근 불가 (default는 내부 패키지의 자식 클래스는 가능) - extends를 통해서 상속을 표현 class 자식 클래스명 extends 부모 클래스명{ } 2. super, super() - super : 부모 클래스와 자식 클래스의 멤버 이름이 같을 때 구분하는 키워드 - super() : 부모 클래스의 생성자 호출 3. 오버라이딩 (Overriding) - .. 2022. 3. 28. 클래스와 객체 1. 클래스(Class) - 객체를 정의하는 설계도 - 객체 변수, 메소드로 이루어짐 2. 생성자(Constructor) - 객체가 생성될 때 자동으로 호출됨 - 생성자를 따로 정의하지 않으면 default 생성자가 있는 것으로 간주한다. - 생성자를 따로 정의했다면 default 생성자를 사용하지 못하는데 이때 사용하고자 한다면 default생성자를 따로 정의해주면 된다. (생성자 오버로딩) - 생성자 규칙 : 클래스명과 이름이 같아야하고 리턴 타입이 없다. 3. this, this() - this : 객체 자신을 의미 - this() : 생성자 4. 오버로딩(Overloading) - 한 클래스 내에서 같은 이름의 메소드를 여러 개 정의 - 메소드의 이름은 같지만 매개변수의 타입이나 개수가 달라야한다.. 2022. 3. 28. 다차원 배열 1. 일차원 배열 int[] myArray1 = {1,2,3,4,5}; 2. 다차원 배열 // 이차원 배열 // 초기화로 생성 int[][] myArray2 = {{1,2,3},{4,5,6}}; // myArray2[0][0]의 값은 1 // myArray2[0][1]의 값은 2 // myArray2[1][0]의 값은 4 // 사이즈로 생성 int[][] myArray2s = new Array[2][3]; // 삼차원 배열 int[][][] myArray3 = {{{1,2},{3,4}},{{5,6},{7,8}}}; 2022. 3. 28. 반복문(for과 while) 1. for - 주어진 횟수만큼 반복하여 실행하는 구조 // for(초기치;조건문;증가치;){반복하여 실행할 내용} for (int i = 0; i < 10; i++) { // 반복하여 실행할 내용 } ArrayList list = new ArrayList(); // for each 문 for (String s : list) { // 리스트 안의 요소를 하나씩 불러다가 실행할 내용 // 리스트의 사이즈 만큼 반복 실행 } 2. while - 조건문이 만족하는 동안 반복하여 실행하는 구조 - while과 do-while 구조가 있음 - 조건문이 만족할 동안 무한 루프를 돌 수 있다. while (조건문) { 반복하여 실행할 내용; } // do의 내용을 무조건 1회 실행한 후 조건문을 확인해서 실행할지 말.. 2022. 3. 28. 조건문(if 와 switch) 1. 조건문 - if - 조건에 따라 무엇을 실행할지 판단하는 분기 구조 - if 와 else if, else로 사용 - if와 else if의 조건 둘다 없으면 else가 실행 - else없는 조건문도 가능 if(조건문1){ 조건문 1을 만족할 때 실행할 내용 }else if(조건문2){ 조건문 2를 만족할 때 실행할 내용 }else { 그 외의 상황에서 실행할 내용 } 2. 조건문 - switch - 입력 값에 따라 어떤 case를 실행할지 판단하는 분기 구조 - break로 탈출안해주면 break나오는 조건까지 쭉 실행된다. switch (입력 값) { case 입력 값 1: 실행할 내용; break; case 입력 값 2: … 실행할 내용; break; … default: 실행할 내용; break.. 2022. 3. 28. 연산자 (Operator) 1. 항과 연산자 - 단항 연산자 : 항이 한 개 - 이항 연산자 : 항이 두 개 - 삼항 연산자 : 항이 세 개 // 단항 연산자 num++; num--; // 이항 연산자 1+2 // 삼항 연산자 (3>1) ? 1 : 0 2. 대입 연산자 (=) - 우측의 데이터를 좌측의 변수에 대입 int num = 100; 3. 부호 연산자 (+,-) - 부호를 나타내는 연산자 +10; -10; 4. 산술 연산자 - 덧셈(+) - 뺄셈(-) - 곱셈(*) - 나눗셈(/) - 나머지(%) 5. 증가/감소 연산자 - 값을 1만큼 늘림(++) - 값을 1만큼 줄임(--) - 값 앞에 붙으면 전위, 뒤에 붙으면 후위 6. 관계 연산자 - 논리식에 대해 참 거짓 판단 - 값은 판단 결과에 따라 true,false 7. 복.. 2022. 3. 28. 자료형 (Data Type) 자료형이란 변수의 종류, 단위를 뜻하며 변수의 종류에 따라 담을 수 있는 데이터의 타입과 크기가 다르다. 1. 숫자 (Number) - 숫자 형태의 자료형 - 정수 / 실수 / 2진수, 8진수, 16진수 종류 예시 정수 int intNum = 10; long longNum = 2147483648L; 실수 float floatNum = 0.1f; double doubleNum = 3.4028236E38; 2진수, 8진수, 16진수 int numBase2 = 0b1100; int numBase8 = 014; int numBase16 = 0xC; 2. 불리언 (Boolean) - 참(=true)과 거짓(=false)을 나타내는 자료형 - 값은 true와 false만 허용 boolean isPass= true;.. 2022. 3. 28. 변수(Variable) 변수란 데이터를 저장하는 메모리 공간에 붙여준 이름이다. 이러한 이름에도 규칙이 존재하는데 (규칙) 1. 문자, 숫자 , _ , $ 만 사용 가능 2. 숫자로 시작 X 3. 대문자와 소문자를 구분 4. 공백 사용 X 5. 예약어 사용 X 변수를 표기할 때 개발자들이 암묵적 룰 같은 것을 정해두었는데 (표기법) 반드시 지킬 필요는 없지만 지키는게 코드 공유할 때도 좋고 보기도 좋다. 1. 카멜 표기법 (camel Case) - 가장 앞의 문자를 소문자로, 나머지 단어의 첫문자는 대문자로 표기 - 변수와 함수에서 사용 - ex) myName, camelCase, powerPoint 2. 파스칼 표기법 (Pascal Case) - 각문자의 첫 문자를 대문자로 표기 - 클래스에서 사용 - ex) MyName, .. 2022. 3. 28. 간단한 Java 소개 Java는 썬 마이크로시스템즈에서 개발한 객체 지향 프로그래밍 언어이다. 현재는 Oracle이 썬 마이크로시스템즈를 인수하면서 Java의 저작권을 소유하고 있다. Java의 특징으로는 1. 플랫폼에 독립적이다 뒤에서 다시 설명하겠지만 하나의 코드만 작성하더라도 윈도우,리눅스,macOS와 같은 서로 다른 운영체제(플랫폼) 아래에서 모두 동일하게 작동한다. 플랫폼 마다 따로 코드를 작성할 필요가 없다는 말! 2. 객체지향적 이다 객체지향언어는 절차 지향적 언어에 비해 생산성 및 보안성이 높다. 객체지향에 대한 것은 후에 따로 다루는게 좋을 것 같다. 캡슐화, 단계적 분해 등등등 자바프로그램의 작동은 먼저 사람이 이해할 수 있는 언어로 코드를 작성하면 그것을 컴파일러가 읽어서 컴퓨터 언어로 번역해 주는데 이것.. 2022. 3. 28. 이전 1 ··· 4 5 6 7 다음