728x90
수업내용
1교시 (09:30-10:20)
- 인터페이스
package a.b.c.ch2.aaaa;
/*
인터페이스 interface
1. 생성자를 가질 수 없다.
2. new 연산자로 인스턴스할 수 없다.
3. 함수는 모두 추상함수이다. abstract 키워드가 생략된 형태이다.
함수는 굳이 abstract 키워드를 사용하지 않는다.
4. 변수는 모두 상수이다.
변수는 굳이 static final 키워드를 사용하지 않는다.
5. static 함수 가능
6. default 함수 가능
*/
public interface Exam_Inter {
// public String str;
/*
C:\00.KOSMO108\10.JExam\ch2>javac -d . Exam_Inter.java
Exam_Inter.java:13: error: = expected
public String str;
^
1 error
*/
public /* static final 생략된 것이다. */ String str = "난 상수이다";
public static final String STR = "난 상수이다";
// 생성자
/*
public Exam_Inter() {
}
*/
// 인터페이스 클래스 new 연산자로 인스턴스하기
// Exam_Inter ei = new Exam_Inter();
public /* abstract 키워드 생략 */ void aM();
public abstract void bM();
}
/*
package a.b.c.ch2.aaaa;
public interface Exam_Inter {
}
C:\00.KOSMO108\10.JExam\ch2>javap a.b.c.ch2.aaaa.Exam_Inter
Compiled from "Exam_Inter.java"
public interface a.b.c.ch2.aaaa.Exam_Inter {
}
*/
/*
public interface Exam_Inter {
// 인터페이스 클래스 new 연산자로 인스턴스 하기
Exam_Inter ei = new Exam_Inter();
}
C:\00.KOSMO108\10.JExam\ch2>javac -d . Exam_Inter.java
Exam_Inter.java:18: error: Exam_Inter is abstract; cannot be instantiated
Exam_Inter ei = new Exam_Inter();
^
1 error
*/
2교시 (10:30-11:20)
- Exam_Inter_1
package a.b.c.ch2.aaaa;
public interface Exam_Inter_1 {
public /* abstract 키워드 생략 */ void aM();
public abstract void bM();
public abstract void cM();
}
- Exam_Inter_1_Class
package a.b.c.ch2.aaaa;
/*
상속 : 부모 자식
부모 : Exam_Inter_1 인터페이스 클래스
자식 : Exam_Inter_1_Class 클래스
*/
/*
상속관계에서 인스턴스하는 방법은 4가지가 있다.
2번 사용하기
1. 자식클래스 참조변수 = new 자식클래스()
2. 부모클래스 참조변수 = new 자식클래스()
3, 4번은 해당사항 없음
3. 부모클래스 참조변수 = new 부모클래스()
4. 자식클래스 참조변수 = new 부모클래스();
*/
public class Exam_Inter_1_Class implements Exam_Inter_1 {
@Override
public /* abstract 키워드 생략 */ void aM() {
System.out.println("Exam_Inter_1 인터페이스에서 오버라이딩해서 aM() {} 블록을 만들고 재정의하는 함수이다.");
}
@Override
public /* abstract */ void bM() {
System.out.println("Exam_Inter_1 인터페이스에서 오버라이딩해서 bM() {} 블록을 만들고 재정의하는 함수이다.");
}
// 인터페이스 클래스에서 가져온 함수를 재정의해야 한다.
// 재정의하라는 것은 {} 블록 브레이스를 만들라는 뜻이다.
// {} 블록 내부에 원하는 내용을 기술한다.
// 구현체를 만든다. 실현한다. Implementation
// 오버라이딩 한 함수에서 abstract 키워드를 제거하고 {} 블록을 만든다.
// public abstract void cM();
@Override
public /* abstract */ void cM() {
System.out.println("Exam_Inter_1 인터페이스에서 오버라이딩해서 cM() {} 블록을 만들고 재정의하는 함수이다.");
}
}
- Exam_Inter_1_Test
package a.b.c.ch2;
import a.b.c.ch2.aaaa.Exam_Inter_1;
import a.b.c.ch2.aaaa.Exam_Inter_1_Class;
public class Exam_Inter_1_Test {
public static void main(String args[]) {
// 2. 부모클래스 참조변수 = new 자식클래스
Exam_Inter_1 ei1 = new Exam_Inter_1_Class();
System.out.println("ei1 참조변수 주소값 >>> : " + ei1);
// System.out.println("ei1.aM() >>> : " + ei1.aM());
/*
C:\00.KOSMO108\10.JExam\ch2>javac -d . Exam_Inter_1_Test.java Exam_Inter_1_Class.java Exam_Inter_1.java
Exam_Inter_1_Test.java:13: error: 'void' type not allowed here
System.out.println("ei1.aM() >>> : " + ei1.aM());
^
1 error
*/
ei1.aM();
}
}
- 위의 Exam_Inter_1_Test 코드 실행
javac -d . Exam_Inter_1*.java
java a.b.c.ch2.Exam_Inter_1_Test
3교시 (11:30-12:20)
- Exam_Inter_1
package a.b.c.ch2.aaaa;
// 인터페이스하고 인터페이스를 상속할 때는 extends 키워드를 사용한다.
// 클래스에 인터페이스를 상속시킬 때 implements 키워드를 사용한다.
public interface Exam_Inter_1 extends Exam_Inter_2 {
public /* abstract 키워드 생략 */ void aM();
public abstract void bM();
public abstract void cM();
// public void dM();
}
- Exam_Inter_2
package a.b.c.ch2.aaaa;
public interface Exam_Inter_2 {
public void dM();
}
- Exam_Inter_3
package a.b.c.ch2.aaaa;
public interface Exam_Inter_3 {
public void eM();
}
- Exam_Inter_1_Class
package a.b.c.ch2.aaaa;
/*
상속 : 부모 자식
부모 : Exam_Inter_1 인터페이스 클래스
자식 : Exam_Inter_1_Class 클래스
*/
/*
상속관계에서 인스턴스하는 방법은 4가지가 있다.
2번 사용하기
1. 자식클래스 참조변수 = new 자식클래스()
2. 부모클래스 참조변수 = new 자식클래스()
3, 4번은 해당사항 없음
3. 부모클래스 참조변수 = new 부모클래스()
4. 자식클래스 참조변수 = new 부모클래스();
*/
public class Exam_Inter_1_Class implements Exam_Inter_1, Exam_Inter_3 {
@Override
public /* abstract 키워드 생략 */ void aM() {
System.out.println("Exam_Inter_1 인터페이스에서 오버라이딩해서 aM() {} 블록을 만들고 재정의하는 함수이다.");
}
@Override
public /* abstract */ void bM() {
System.out.println("Exam_Inter_1 인터페이스에서 오버라이딩해서 bM() {} 블록을 만들고 재정의하는 함수이다.");
}
// 인터페이스 클래스에서 가져온 함수를 재정의해야 한다.
// 재정의하라는 것은 {} 블록 브레이스를 만들라는 뜻이다.
// {} 블록 내부에 원하는 내용을 기술한다.
// 구현체를 만든다. 실현한다. Implementation
// 오버라이딩 한 함수에서 abstract 키워드를 제거하고 {} qmffhrdmf aksemsek.
// public abstract void cM();
@Override
public /* abstract */ void cM() {
System.out.println("Exam_Inter_1 인터페이스에서 오버라이딩해서 cM() {} 블록을 만들고 재정의하는 함수이다.");
}
// 재정의해야 한다.
@Override
public void dM() {
System.out.println("Exam_Inter_2 인터페이스에 있는 추상함수이다.");
System.out.println("Exam_Inter_1 인터페이스에 extends 키워드로 인터페이스 상속을 해주었다.");
System.out.println("Exam_Inter_1 인터페이스에 dM() 함수를 오버라이딩해주었다.");
System.out.println("Exam_Inter_1_Class 클래스에서 오버라이딩해서 재정의했다.");
}
// 재정의해야 한다.
@Override
public void eM() {
System.out.println("Exam_Inter_3 인터페이스에 있는 추상함수이다.");
}
}
- Exam_Inter_1_Test
package a.b.c.ch2;
import a.b.c.ch2.aaaa.Exam_Inter_1;
import a.b.c.ch2.aaaa.Exam_Inter_3;
import a.b.c.ch2.aaaa.Exam_Inter_1_Class;
public class Exam_Inter_1_Test {
public static void main(String args[]) {
// 2. 부모클래스 참조변수 = new 자식클래스
Exam_Inter_1 ei1 = new Exam_Inter_1_Class();
System.out.println("ei1 참조변수 주소값 >>> : " + ei1);
// System.out.println("ei1.aM() >>> : " + ei1.aM());
/*
C:\00.KOSMO108\10.JExam\ch2>javac -d . Exam_Inter_1_Test.java Exam_Inter_1_Class.java Exam_Inter_1.java
Exam_Inter_1_Test.java:13: error: 'void' type not allowed here
System.out.println("ei1.aM() >>> : " + ei1.aM());
^
1 error
*/
ei1.aM();
ei1.bM();
ei1.cM();
ei1.dM();
// ei1.eM();
Exam_Inter_3 ei3 = new Exam_Inter_1_Class();
System.out.println("ei3 참조변수 주소값 >>> : " + ei3);
ei3.eM();
}
}
- 위의 Exam_Inter_1_Test 코드 실행
javac -d . Exam_Inter_*.java
java a.b.c.ch2.Exam_Inter_1_Test
4교시 (12:30-13:20)
- Exam_Inter_1_Test에서 Exam_Inter_3를 불러와서 ei3으로 선언하는 이유
- DD
package aaa.bb;
public interface DD {
public void dd();
}
- A_Test
package aaa;
import aaa.bb.DD;
class CC implements DD {
public void dd() {
System.out.println("dd");
}
}
class BB extends CC {
}
class AA {
}
public class A_test {
public static void main(String args[]) {
}
}
- 위의 A_Test 코드 실행
javac -d . A_test.java DD.java
java aaa.A_test
5교시 (14:30-15:20)
- Ex_MessageInterface
package a.b.c.ch2;
public interface Ex_MessageInterface {
public void sayHello(String name);
}
- Ex_MessageKorImpl
package a.b.c.ch2;
public class Ex_MessageKorImpl implements Ex_MessageInterface {
@Override
public void sayHello(String name) {
System.out.println("안녕하세요, " + name + "!!");
}
}
- Ex_MessageEngImpl
package a.b.c.ch2;
public class Ex_MessageEngImpl implements Ex_MessageInterface {
@Override
public void sayHello(String name) {
System.out.println("Hello, " + name + "!!");
}
}
- Ex_MessageTest
//package
package a.b.c.ch2;
// import
// class 선언
public class Ex_MessageTest {
// 상수
// 멤버변수
// 생성자
// 함수
// main() 함수 : 프로그램 시작점
public static void main(String args[]) {
//TODO Auto-generated method stub.
Ex_MessageInterface eme = new Ex_MessageEngImpl();
eme.sayHello("Hong Gil Dong");
Ex_MessageInterface emk = new Ex_MessageKorImpl();
emk.sayHello("홍길동");
}
}
- 위 Ex_MessageTest 코드 실행
javac -d . Ex_Message*.java
java a.b.c.ch2.Ex_MessageTest
6교시 (15:30-16:20)
- IDE
인터페이스
--------------
추상클래스
--------------
상속
--------------
자바
jdk
편집기
콘솔
API
통합 개발 환경 IDE (Integrated Development Environment)
: jdk, 편집기, 콘솔, API 이것을 GUI 환경에서 다 지원하는 것
----------------------------------------------------
이클립스 eclipse 비상용
인텔리제이 IntelliJ 인텔리제이 상용
비쥬얼 스튜디오 Visual Studio
안드로이드 스튜디오 Android Studio
파이참 Pycharm
.... 등등
이클립스 eclipse
---------------------------------------------------
2001년 IBM VisualAge용 소프트웨어 개발 툴로 만들어졌으나
개발 도중 관련 소스 등을 모조리 공개하는 자유 소프트웨어가 되었고
이것이 '이클립스' 란 이름으로 세상에 선보임
초창기(Hellos 까지)
Helios(2005년)
2006년 부터 목성의 위성 또는 관련된 인물의 이름을 임의로 채용
Callisto(2006년)
Europa(2007년)
Ganymade(2008년)
Galileo(2009년)
알파벳 네이밍 1기(천문학 네이밍, Mars 까지)
Helios(2010년)
Indigo(2011년)
Juno(2012년)
Kepler(2013년)
Luna(2014년)
Mars(2015년)
알파벳 네이밍 2기(원자론 네이밍, Neon 부터 Photon 까지)
Neon(2016년)
Oxygen(2017년)
Photon(2018년)
연도-월 버저닝
Eclipse 2018-09(4.9) ~ Eclipse 2019-12(4.14)
Eclipse 2020-03(4.15)
Eclipse 2020-06(4.16) <====
web, java : Eclipse IDE for Enterprise Java Developers
java : Eclipse IDE for Java Developers
Eclipse 2020-09(4.17)
Eclipse 2020-12(4.18)
Eclipse 2021-03(4.19)
Eclipse 2021-06(4.20)
Eclipse 2021-09(4.21)
Eclipse 2021-12(4.22)
- 총 파일 2개 설치
- eclipse.org 에서 Eclipse IDE 2020-06 R Packages 중에 Eclipse IDE for Enterprise Java Developers 중 운영체제에 맞는 것 설치
- eclipse-jee-2020-06-R-win32-x86_64.zip
- Eclipse Installer 2020-06-R 설치
- mirror : 빨리 다운 받을 수 있을 것 같은 곳으로 선택
- eclipse-inst-win64.exe
- eclipse.org 에서 Eclipse IDE 2020-06 R Packages 중에 Eclipse IDE for Enterprise Java Developers 중 운영체제에 맞는 것 설치
7교시 (16:30-17:20)
- Eclipse 다운로드 및 코드 생성 후 실행
- eclipse-inst-win64.exe 파일 클릭하여 C:\00.KOSMO108\10.JExam\10.JavaTest\javaProject_1 경로에 fistProject로 자바 프로젝트 생성
- src에 패키지 a.b.c.ch3 생성
- 클래스 생성
package a.b.c.ch3;
public class Hello {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("안녕 이클립스 ㅋㅋㅋ !!!");
HelloInterface hif = new HelloInterfaceImpl();
hif.interfaceFunc();
HelloVO hvo = new HelloVO();
hvo.setMid("HGD");
hvo.setMpw("HGD00");
hvo.setMname("홍길동");
System.out.print(hvo.getMid() + " ");
System.out.print(hvo.getMpw() + " ");
System.out.print(hvo.getMname());
}
}
- 인터페이스 생성
package a.b.c.ch3;
public interface HelloInterface {
public void interfaceFunc();
}
- 클래스생성 - interfaces - add - HelloInterface 클릭
- package a.b.c.ch3; public class HelloInterfaceImpl implements HelloInterface { @Override public void interfaceFunc() { // TODO Auto-generated method stub System.out.println("Hello Interface ㅋㅋㅋ!!"); } }
- 클래스생성
- private으로 필드 생성
- source - generate getters and setters
- source - generate constructor using fields
- 필드를 모두 인자로 받는 생성자
- 아무것도 없는 생성자
package a.b.c.ch3; public class HelloVO { private String mid; private String mpw; private String mname; public HelloVO() { } public HelloVO(String mid, String mpw, String mname) { this.mid = mid; this.mpw = mpw; this.mname = mname; } public String getMid() { return mid; } public void setMid(String mid) { this.mid = mid; } public String getMpw() { return mpw; } public void setMpw(String mpw) { this.mpw = mpw; } public String getMname() { return mname; } public void setMname(String mname) { this.mname = mname; } }
8교시 (17:30-18:30)
- [교재 350p] 클래스
java.lang.* : 자바 core 패키지
문자열, 문자, 숫자, 시스템에 관련된 클래스 묶음
Object
String
Integer
System
Wrapper
java.utill.*
데이터(컬렉션 프레임워크), 날짜, 시간 관련된 클래스 묶음
ArrayList
HashMap
Date
Calendar
java.math.*
숫자에 관련된 클래스 묶음
BicDecimal
java.io.*
파일 및 입출력에 관련된 클래스 묶음
File
inputStream
outputStream
java.sql.*
JDBC를 통한 데이터베이스 연동 클래스 묶음
DriverManager
Connection
Statement
PreparedStatement
ResultSet
- ArrayList
package a.b.c.ch4;
import java.util.ArrayList;
import java.util.Date;
public class ArrayListTest {
public void arrayListTest() {
System.out.println("ArrayListTest.arrayListTest() 함수 진입 >>> :");
ArrayList aList = new ArrayList();
System.out.println("aList 참조변수 주소값 >>> : " + aList);
System.out.println("aList.size() >>> : " + aList.size());
aList.add("홍길동");
System.out.println("aList >>> : " + aList);
System.out.println("aList.size() >>> : " + aList.size());
aList.add(27);
System.out.println("aList >>> : " + aList);
System.out.println("aList.size() >>> : " + aList.size());
aList.add(new ArrayListTest());
System.out.println("aList >>> : " + aList);
System.out.println("aList.size() >>> : " + aList.size());
aList.add('홍');
System.out.println("aList >>> : " + aList);
System.out.println("aList.size() >>> : " + aList.size());
aList.add("길동");
System.out.println("aList >>> : " + aList);
System.out.println("aList.size() >>> : " + aList.size());
aList.add(new Integer(27));
System.out.println("aList >>> : " + aList);
System.out.println("aList.size() >>> : " + aList.size());
aList.add(false);
System.out.println("aList >>> : " + aList);
System.out.println("aList.size() >>> : " + aList.size());
aList.add(12.34566);
System.out.println("aList >>> : " + aList);
System.out.println("aList.size() >>> : " + aList.size());
aList.add(new Date());
System.out.println("aList >>> : " + aList);
System.out.println("aList.size() >>> : " + aList.size());
aList.add(aList);
System.out.println("aList >>> : " + aList);
System.out.println("aList.size() >>> : " + aList.size());
for (int i=0; i < aList.size(); i++) {
System.out.println("aList.get(" + i + ") >>> ::: " + aList.get(i));
}
ArrayList<String> aList_1 = new ArrayList<String>();
System.out.println("aList_1 >>> : " + aList_1);
aList_1.add("홍길동");
aList_1.add("23");
System.out.println("aList_1 >>> : " + aList_1);
System.out.println("aList_1.size() >>> : " + aList_1.size());
}
public static void main(String args[]) {
// TODO Auto-generated method stub
new ArrayListTest().arrayListTest();
}
}
Notes
728x90
'국비지원교육 (22.01-22.07) > 강의노트' 카테고리의 다른 글
22-02-21(월) 018일차 [Java] 컬렉션 프레임워크, Variable Case, Equal test, String test (0) | 2022.04.20 |
---|---|
22-02-18(금) 017일차 [Java] 상속, 추상클래스, 인터페이스 예제 연습, ArrayList (0) | 2022.04.20 |
22-02-16(수) 015일차 [Java] 상속, 다형성, 상수, final (0) | 2022.04.16 |
22-02-15(화) 014일차 [Java] 생성자, 상속, 메서드 오버라이딩 (0) | 2022.04.16 |
22-02-14(월) 013일차 [Java] 객체 지향 프로그래밍, 상속, 생성자, this, 정보 은닉 (0) | 2022.04.16 |