JAVA공부하기 96

추상 메서드를 포함하지 않는 추상클래스

 

- 추상메서드를 포함하지 않는 클래스도 추상클래스가 된다.

: 일반 클래스에 abstract 키워드만 명시해 놓은 것

: 일반 클래스와 동일하지만 abstract 키워드가 붙어있기 때문에 객체를 생성할 수 없음

 

- 이런 클래스는 상속 자체만으로 완전한 클래스가 된다.

: 추상 메서드를 포함하지 않기 때문

 

- 무조건 추상 클래스를 상속받게 만들기 위해서

: 상속을 기본으로 만들기 위한 방법론

 

- 추상클래스는 상속을 목적으로 만들어진 특징을 갖고 있음

 


 

 

JAVA공부하기 95

추상클래스의 사용

 

abstract class ship {

public abstract int move();    // 사람을 몇명 나르는가

public abstract int carry();    // 무기를 몇 정 나르는가

}

 

class Boat extends ship {

public int move() {

return 6;

}        // 사람을 몇명 나르는가

public int carry(){

return 6;

}        // 무기를 몇 정 나르는가

public string name(){

return "쌩쌩 보트 : ";

}

}

 

class Cruise extends ship {

public int move() {

return 300;

}        //사람을 몇명 나르는가

publci int carry(){

return 200;

}        // 무기를 몇 정 나르는가

public String name(){

return "전함 무궁화 : " ;

}

}

 

 

class shiputil {

public static void search(ship s){

System.out.println(s.move());

System.out.println(s.carry());

 

if(s instanceof Boat){

Boat b=(Boat)s;

System.out.println("Boat 이름: "+.name());

}

else if(s instance of Cruise){

Cruise b=(Cruise)s;

System.out.println("Cruis 이름: "+b.name());

}

}

}

public class shipMain{

public static void main(string[] args) {

ship ship1=new Boat();

ship ship2=new Cruise();

System.out.println(ship1.move());

System.out.println(ship1.carry());

System.out.println(shtip2.move());

System.out.println(ship2.carry());

shiputil.search(ship2);

}

}

 

 

 

 

JAVA공부하기 93

 

추상클래스란?

 

- 미완성 클래스

 

- 추상메서드가 포함된 클래스

: 자동으로 추상클래스가 됨

 

- abstract키워드가 붙은 완전한 클래스

: 구조상 상속해서 재정의해야만 사용가능

 

- 자체적으로 객체를 생성할 수 없음

: 하위클래스에서 추상메서드를 반드시 구현해야함

 

-타입 정보로는 사용

 


 

추상클래스와 추상메서드

 

- 추상 메서드를 포함하는 클래스는 반드시 추상클래스

: 클래스에 abstract를 표시하지 않으면 에러

 

- 추상클래스는 추상 메서드를 포함 가능

 

 

 

간단한 예제

 

: 반드시 포함해야 하는 것은 아님

 

- 하위클래스에서 상속받은 추상 메서드를 반드시 재정의해야함

: 하나라도 재정의하지 않으면 하위클래스도 추상클래스가 됨

 

- 추상 메서드

: 메서드의 원형만 선언된 메서드 : 블록({})이 없는 메서드

 

 

 

JAVA공부하기87

상속의 이해

 

public class Ant

{

private String name="Ant";

public String getName()

{ return name; }

public String toString()

{ return "이름 : "+name;}

public void pring()

{ System.out.println(name+"은 동굴에 산다.") }

}

 

public class WaterAnt extends Ant

{

private String where="water";

public void show()

{ System.out.println(where+"주변"); }

public void print()

{ System.out.println(getName()+"은 "+where+"에 산다."); }

}

 

public class WaterAntMain

{

public static void main(String[] args)

{

Ant ant=new Ant();

ant.print();

System.out.println(ant.toString());

 

WaterAnt sant=new WaterAnt();

want.print();

want.show();

System.out.println(want.toString());

}

}

 

 

 

WaterAnt want=new WaterAnt();

 

 

 

 

 

Ant ant1 = new Ant();

 

 

WanterAnt want= new WanterAnt();

JAVA공부하기 86

생성자메서드의 상속과 호출

 

상속된 서브 클래스에서 객체가 생성

- 슈퍼 클래스의 생성자가 먼저 수행

- 그 다음에 서브클래스의 생성자가 수행

 

자동으로 수행되는 슈퍼 클래스의 생성자는 묵시적 생성자

- 묵시적 생성자란 매개변수가 없는 생성자를 뜻함

 

오버로딩된 생성자를 호출하기 위해 "super"를 사용

- super의 사용 형식

* super(매개변수)

- 생성자 메서드는 상속되지 않음

 

생성자메서드의 상속과 호출 예제 1번

 

 

 

생성자 메서드의 상속과 호출 예제 2번

 

 

JAVA공부하기 66

 

JVM 메모리 모델

 

- MemoryModeltest 클래스를 로딩할 때 메모리 상태

: 자바 가상머신은 MemoryModelTest 클래스를 메모리에 로드

 

- 프로그램을 실행하기 위한 초기작업 수행

: 클래스 구성 요소가 메서드 영역에 적재

 

 

 

- 자바가상머신이 main메서드를 호출할 때 메모리 상태

: main 메서드가 호출되면 main 메서드를 위한 스택 프레임이 할당된다.

: main 메서드 내에서 사용되는 매개변수, 지역변수 등이 main 스택 프레임에 위치하게 된다.

 

 

 

JAVA공부하기 53

 

메서드_자판기

 

1번째

 

public class coffeelmain {

public static void main(String[] args) {

int myMoney = 800; // 800원은 커피 몇잔일까?

int cups = 0;  // 몇잔나올까 준비

if(myMoney > 0) {

cups = myMoney/200;  //커피 몇잔

} else if(myMoney==0){

cups=0;

} else {

cups=1;

}

if(cups>0) {

System.out.println("커피" +cups+"잔 입니다.");

} else {

System.out.println("액수가 모자랍니다.");

}

}

}

 

2번째

 

 

 

 

 

 

JAVA공부하기48

 

객체의 메모리 생성과 할당

 

메모리의 생성

- 특정 데이터 타입으로 가상 머신 속에 해당하는 만큼의 메모리를 확보하는 일

 

객체변수 선언

 

 

new연산자로 메모리 생성 후, 생성자 호출

 

 

동시에 객체변수의 선언과 메모리 할당하기

 

 

 

 

 

 

 

- Father는 int형 값 3개를 내장할 수 있는 형식

- Father f

* 객체를 "가리키기위한 값"을 넣을 수 있는 "상자"

* 객체 잠조 변수, 참조값, 인스턴스 변수

 

- f=new Father()

* new라는 키워드를 통해 VM Father 객체를 Heap영역에 새로 생성하고 그 참조값(주소)를 리턴 한다.

 

 

+ Recent posts