클래스
필드(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 |