다잇소


[IT/트랜드] Java 기초 – ⑤( Java package, import, Inheritance)

2017.09.07

 9. Java package




1.         package


1) 선언 및 역할


package는 Java에서 class, interface, enumeration 및 annotation간의 name의 충돌을 피하고, 접근 용이하게 하고, 위치 찾기를 쉽게 함


– 선언은 Java Source file의 첫 부분에 선언










package com.kds.java.basic.char02;



– package명과 directory위치 : CLASSPATH로 포함된 위치와 package내에 “.”로 directory 구분자 하면 일치하여야 함


예 ) D:\Workspace\Java\JavaBasic\bin가 CLASSPATH에 포함된 경우


1504428317729


– compile option -d로 compile되는 위치 지정


예) javac -d D:\Workspace\Java\JavaBasic\bin Dog.java로 compile하면 위의 같은 경로 Dog.class 생성


– package를 선언하지 않은 경우에는 CLASSPATH 위치에 생성


2) Java의 대표 package































Package 명



설 명



java.lang



기본 class와 필수 interface( Wrapper ,String, Thread 등등)



java.util



유용한 class와 interface(Stack, Collection,Arrays,Map, HashMap,List, ArrayList등등)



java.io



File과 입출력을 다루는 class와 interface(InputStream, File, Writer,Scanner, Serializable



java.sql



Database을 다루는 class와 interface



javax.swing



GUI를 다루는 class와 interface



 


2.         import


– Compiler에게 해당하는 특정 class등이 어디에 있는지 위치를 알려줌


– package 다음에 선언이 됨


– 일반 import : package명 + . * (하위에 모든 type사용) 나 package명 + . + Type명 (특정 Type만을 사용하는 경우)


– static import: package명 + . + Type명 + .*” 또는 package명 + . + Type명 + .static method or static field variavel (static method나 class 변수 사용)










package com.kds.java.basic.char02;


 


import java.io.File;


import java.sql.*;


import static java.lang.Math.*;


import static java.lang.Integer.parseInt;


 


public class ImportTest {


 


public static void main(String[] args) throws Exception {


File file = new File(“D:/temp/file01.txt”);


java.io.FileInputStream fis = new java.io.FileInputStream(file);


PreparedStatement stmt = null;


ResultSetMetaData rsetMeta = null;


System.out.println(PI);


double ranValue = random()*100;


int i = parseInt(“10”);


}


}



3.         API


– 사전에 미리 만들어진 Java Libaray


– Core API – package명 java로 시작


– 확장 API – package명이 javax로 시작


– Javadoc으로 생성된 Java API Document를 이용 할 수 있음


  * 참고 사이트 : https://docs.oracle.com/javase/1.5.0/docs/api/


    WinHelp : https://javadoc.allimant.org/


1504428317754


 




  1.  Inheritance(상속)


1.         상속의 일반 특징


– 부모 type의 모든 state와 method를 받는 것


– Java의 원조 부모 class는 Object


– IS-A 관계(동등관계)


  예) 치와와는 개이다. , 사자는 고양이과이다.


* Has-A관계(Aggregation – 소속관계)


예) 개는 네 다리를 가지고 있다. , 직원은 회사에 소속되어 있다.


– 상속의 효과 : 다형성과 재사용성


1504428317762


 


2.         Java 상속의 특징


– Java 상속 시에는 extends 라는 key word사용


– extends를 사용하지 않는 원조 object인 Object class를 상속


– Java는 다중 상속을 허용하지 않음( Interface를 활용하여 다중 상속 효과)


– 접근자가 protected와 public인 모든 instance variable과 method를 자식에서 사용 가능


– 부모 class는 superclass, 자식 class는 subclass라고 부름










class Subclass-name extends Superclass-name 



   //methods and fields 


}


)


class Animal {}


class Dog extends Animal {}



 


3.         Override


1) Overriding 하기


– superclass에 있는 생성자나 method를 다시 작성하는 것


– 해당 class에 맞게 method를 재정의 할 때 사용


– superclass의 method를 사용할 때는 super라는 key word를 사용


– 생성자인 경우는 항상 시작부분에, method인 경우는 위치 상관없고, superclass의 다른 method도 호출 가능


– Java 5에서 부터에서는 명시적으로 @Override가는 annotation을 사용 할 것을 권고










package com.kds.java.basic.char03;


 


public class Animal {


protected double size;


protected double weight;


public Animal(double size,double weight) {


this.size = size;


this.weight = weight;


}


 


public double getSize() {


return size;


}


public double getWeight() {


return weight;


}


 


protected void move() {


System.out.println(“An animal moves.”);


}


protected void eat() {


System.out.println(“An animal eats.”);


}


}



 










package com.kds.java.basic.char03;


 


public class Canine extends Animal {


protected double speed;


public Canine(double size, double weight, double speed) {


super(size, weight);


setSpeed(speed);


}


 


@Override


public void move() {


super.move();


System.out.println(“A canine moves.”);


}


 


@Override


public void eat() {


System.out.println(“A canine eats.”);


}


public double getSpeed() {


return speed;


}


 


public void setSpeed(double speed) {


// this.speed = speed>40?40:speed;


if( speed > 40 ) {


this.speed = 40;


}


else {


this.speed = speed;


}


}


 


public void run() {


if( weight > 100) {


System.out.printf(“A canine is too heavy to run.”);


}


else {


System.out.printf(“A canine runs at %fkm/h.\n”, speed);


}


}


}



 










package com.kds.java.basic.char03;


 


public class DogDrive {


public static void main(String[] args) {


Animal animal = new Animal(10.0, 3.0);


Canine canine = new Canine(8.0, 5.0, 35.0);


animal.eat();


canine.eat();


canine.run();


}


}



 


※ Quiz


1. 다음을 compile 해 보고, complie이 되면 실행하여 보세요.










public class TestInheritance {


public static void main(String aga[]) {


Test t1 = new Test();


Test t2 = new Fest();


t1.tests();


t2.tests();


t1.nonOverride();


t2.nonOverride();


}


}


 


class Test {


void tests() {


System.out.println(Test class : tests”);


}


void nonOverride() {


System.out.println(“Test class : nonOverride”);


}


}


 


class Fest extends Test {


@Override


void tests() {


System.out.println(“Fest class : tests”);


}


}



 




 




설정된 프로필 사진이 없습니다.
| Wise리더
관심분야 IT,여행,맛집

카테고리 레이어 닫기