2일차

2019. 8. 13. 10:31프로그래밍/Java

오버 로딩: 동일한 함수를 여러 개 만드는 거

오버 라이딩: 부모 값을 바꾸거나, 재정의 하기 위해

 

생성자를 쓰는 목적: 다양하게 오버 로딩 위해

 

instant 메쏘드

static 메쏘드

오버로딩: 동일한 함수를 여러 개 만드는 거 

 

오버 라이딩: 부모 값을 바꾸거나, 재정의 하기 위해 

 

 

 

생성자를 쓰는 목적: 다양하게 오버 로딩 위해

 

 

 

instant method

 

static method

 

this 레퍼런스: : 자기자신을 접근하는 객체 레퍼런스 변수

this는 인스턴트 메쏘드 앞에 위치해야 함, static method에는 this가 없음

 

/*
 * this, this()
 * 1. this 
 *         : 자기 자신을 접근하는 객체 레퍼런스변수
 *         : 항상 인스턴스메소드 첫번째 매개변수로 항상 존재하고 있다.
 *         : 선언할수없다. 사용만 가능
 *         : 객체를 구별하기 위해, 메모리 절약효과가 있음.
 *         : 매개변수 이름과 필드이름이 갗을경우 this로 구별
 *         : 인스턴스 메소드에서 자기자신(객체)를 리턴할 경우
 */

class A{
    private int a;
    
    public void setA(int a) { //setA(A this, int aa)
        this.a=a; //지역변수와 필드를 구분하기 위해 this사용
        //this.a=aa;
        //a = aa;  this를 빼도 상관없음
    }
    public int getA() { //getA(A this)
        return a;
    }
    public A getObject() {
        return this;
    }
}

public class This {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        A aa = new A(); 
        
        aa.setA(100); //aa.setA(aa,100)
        
        System.out.println(aa.getA()); // aa.getA(aa)
        
        System.out.println(aa); 
        //System.out.println(aa.toString()); toString 생략
    }

}

 

생성자 오버로딩

 

class A{
    private int a;
    private int b;
    
    public A() {
    }
    public A(int a) {
        this.a=a;
    }
    public A(int a, int b) {
        this.a=a;
        this.b=b;
    }
    public int getA() {
        return a;
        //return this.a;
    }
    public int getB() {
        return b;
    }
    
}

public class This {

    public static void main(String[] args) {
    
        A aa = new A(); //생성자 함수 호출
        A bb = new A(10); // 10,0
        A cc = new A(30,40); //30,40 
        
        System.out.println(aa.getA()+"\t"+aa.getB());
        System.out.println(bb.getA()+"\t"+bb.getB());
        System.out.println(cc.getA()+"\t"+cc.getB());
        
        
    }

}

 

다른 예

/*
 * this()
 *     : 생성자에서 또 다른 생성자 호출
 */

class A{
    private int a;
    private int b;
    
    public A() {
        //a=b=0;
        this(0,0); //유지보수 쉬움
    }
    public A(int i) {
        //a=i;
        //b=0;
        this(i,0);
    }
    public A(int i, int j) {
        a=i;
        b=j;
    }
    public int getA() {
        return a;
        
    }
    public int getB() {
        return b;
    }
    
}

public class This {

    public static void main(String[] args) {
    
        A aa = new A(); //생성자 함수 호출
        A bb = new A(10); // 10,0
        A cc = new A(30,40); //30,40 
        
        System.out.println(aa.getA()+"\t"+aa.getB());
        System.out.println(bb.getA()+"\t"+bb.getB());
        System.out.println(cc.getA()+"\t"+cc.getB());            
    }

}

 

이름.나이,국,영,수,총,평

 

public class Info {
	private String name;
	private int age;
	
	public Info() {
		//name = null;
		//age = 0;
		this(null,0);
	}
	public Info(String name, int age) {
		this.name = name;
		this.age=age;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
	}
	
}

 

/*
 * 이름, 국,영,수,총,평,나이
 * 
 */
public class StudentInfo {

	private Info info;  //이름, 나이
	private int kor,eng,mat;  //국,영,수
	private int total; //총
	private float avg;  //평
	
	public StudentInfo() {
		info = new Info();
		kor=eng=mat=total=0;
		avg=0.f;
	}
	
	public void setName(String name) {
		info.setName(name);
	}
	public String getName() {
		return info.getName();
	}
	public void setAge(int age) {
		info.setAge(age);
	}
	public int getAge() {
		return info.getAge();
	}
	
	public int getKor() {return kor;}
	public int getEng() {return eng;}
	public int getMat() {return mat;}
	
	
	public void setKor(int kor) {this.kor=kor;}
	public void setEng(int eng) {this.eng=eng;}
	public void setMat(int mat) {this.mat=mat;}
	
	public int getTotal() {return total=kor+eng+mat; }
	public float getAvg() {return avg=total/3.f;}
	
	
	public static void main(String[] args) {
		StudentInfo si=new StudentInfo();
		
		si.setName("Supermam");
		si.setAge(1000);
		si.setKor(100);
		si.setEng(70);
		si.setMat(75);
		
		System.out.println(si.getName());
		System.out.println(si.getAge());
		System.out.println(si.getKor());
		System.out.println(si.getMat());
		System.out.println(si.getEng());
		System.out.println(si.getTotal());
		System.out.println(si.getAvg());

	}

}

 

 

'프로그래밍 > Java' 카테고리의 다른 글

8_15  (0) 2019.08.15
interface  (0) 2019.08.14
interface  (0) 2019.08.14
추상클래스  (0) 2019.08.14
2일차_배열  (0) 2019.08.13