본문 바로가기

JAVA/기본다지기

JAVA 8일차 필기

클래스


필드(Field)

클래스의 field는 전역변수. 전역변수의 값 하나로 클래스의 성격이 크게 좌우됨.


클래스의 구성

class A{

A(){}    //생성자

int a;    //전역변수

void B(){}    //메소드, 함수

public static void main(String[] args){}   //main메소드

}


final, 접근지정자, static을 활용하는법


ch05method 패키지에 새로운 클래스 L04Return.java 생성

package com.javalesson.ch05method;

import java.util.Scanner;

public class L04Return {

    public static String numDemo(){     //오버로드

        return "zero";

    }

    public static String numDemo(int num){
        //0 -> "zero"
        //1 -> "one"
        //2 -> "two"
        //3 -> "three"
        //나머지는 "none"
        if(num==0){
            return "zero";
        }
        else if(num==1){
            return "one";
        }
        else if(num==2){
            return "two";
        }
        else if(num==3){
            return "three";
        }
        else{return "none";}
        //String = "10"; 메소드의 마지막 로직은 return이어야 한다.
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("숫자 입력 : ");
        System.out.println(numDemo(scan.nextInt()));
    }//main end
}//class end


com.javalesson.에 새로운 패키지 ch06class 생성

L01Class.java 생성

package com.javalesson.ch06class;

public class L01Class {
    public static void main(String[] args) {
        //HelloPrint()를 2번 호출하세요.
        //new 연산자로 생성자를 호출해야 helloPrint()가 메모리에 할당된다.
        new HelloClass("철수").helloPrint();
        new HelloClass("영희").helloPrint();
        String[] p = {"철수", "영희", "바둑이"};//배열은 선언하고 넣는것을 권장
        new HelloClass(p).helloPrints();
    }//main end
}//class end

class HelloClass{
    String name;
    String[] names;
    public HelloClass(String name){
        this.name = name;
    }
    public HelloClass(String[] names){
        this.names = names;
    }//생성자 오버로드 -> 다형성(한가지 이름이 여러 역할을 하는 것)
    public void helloPrint(){
        System.out.println(name+"님 안녕하세요.");
    }
    public void helloPrints(){
        for(int i=0; i<names.length; i++){
            System.out.println(names[i]+"님 안녕하세요.");
        }
    }
}//class end


ch06class패키지에 새로운 클래스 L02Calculator.java 생성

package com.javalesson.ch06class;

class Calculator{
    int a,b;
    public Calculator(int a, int b){
        this.a=a;
        this.b=b;
    }
    public int sum(){
        return a+b;
    }
    public int avg(){
        return (a+b)/2;
    }

    public void msg(){
        System.out.println("합:"+sum()+", 평균:"+avg());
    }

}//class end

public class L02Calculator {
    public static void main(String[] args) {
        new Calculator(10,30).msg();
        //필드로 Integer a,b
        //a,b 객체 생성시 값을 초기화
        //sum()함수를 호출하면 a+b가 출력
        //avg()함수를 호출하면 (a+b)/2가 반환
        //L02Calculator에서 sum()과 avg()를 호출하세요
    }//main end
}//class end


ch06class 패키지에 새로운 클래스 L03Scope.java 생성

package com.javalesson.ch06class;

public class L03Scope {
    static int i = 10;//Scope란 변수 i의 범위
    public static void a(){
        i = 0;
    }
    public static void main(String[] args) {
        for(int i=0; i<5; i++){
            a();
            System.out.println(i);
        }//무한 반복문. why? a()메소드가 실행되면서 i의 값이 계속 0으로 초기화됨
        //해결: for문 안의 i를 지역변수로 설정해준다.
        System.out.println(i);
    }//main end
}//class end


상속


새로운 패키지 ch07extends 생성 후 새로운 클래스 L01Extends.java 생성

package com.javalesson.ch07extends;
//조상클래스, 부모클래스, 자식클래스
class Ancestor{}
class Parents extends Ancestor{
    String name = "부모";
    String p_name = "p부모";
    public void p_method(){
        System.out.println(name+"함수 호출");
    }
}
class Child extends Parents{
    String name = "자식";
    public void c_method(){
        System.out.println(name+"함수 호출");
    }
   
    @Override //부모 또는 조상의 함수를 재정의
    public void p_method(){
        System.out.print(name+"함수에서 ");
        super.p_method();
    }
}

public class L01Extends {
    public static void main(String[] args) {
        Child c = new Child();
        c.c_method();
        c.p_method();//상속 받아서 부모의 자원을 사용 가능
        System.out.println(c.name);//부모의 name이 자식의 필드로 덮어씌워짐
        System.out.println(c.p_name);//상속 받아서 부모의 자원을 사용 가능
    }//main end
}//class end


'JAVA > 기본다지기' 카테고리의 다른 글

JAVA 10일차 필기  (1) 2016.08.12
JAVA 9일차 필기  (0) 2016.08.11
JAVA 7일차 필기  (0) 2016.08.09
JAVA 6일차 필기  (0) 2016.08.08
JAVA 5일차 필기  (1) 2016.08.05