1. 생성자 - 이것이 자바다 6.7
Point2D pt = new Point2D(); // 객체 생성 -> Point2D() : 생성자
//기본 생성자
public Point2D() {
}
//이미 컴파일러 안에서 기본 생성자를 만든것 처럼 사용
----------------------------------------------------------------------------
package oop5;
public class Point2D {
int x;
int y;
//새로운 생성자를 만들때에는 기본 생성자를 꼭 만들어 주자!!
//public Point2D() {} //=> 기본 생성자(default생성자 : 컴파일러가 만들어준 생성자)
//생성자 constructor
public Point2D() {
this(100,200); //생성자 오버로딩, 메모리의 초기화 이기때문에 무조건 생성자를 먼저 호출해줘야 한다.
System.out.println("Poin2D()");
}
public Point2D(int x, int y) {
//super(); //object클래스에서 먼저 수행하고 오겠다. 이런뜻 지워도 됨
this.x = x;
this.y = y;
System.out.println("Point2D(x,y) 수행중..");
}
//toString ovverride
@Override
public String toString() {
return x+","+y;
}
}
------------------------------------------------------------------------------------------
p.236
정적멤버 : 미리 메모리에 만들어짐
동적 : 수행중에 할당(new같은거)
package oop6;
public class Account {
int money1;
static int money2; //누적이되고 있다. static은 저장소를 따로 갖는다.
//프로그램에 따로 저장하고 인스턴스가 모두 공유한다. | 처음실행될때부터 만들어져 있음
public Account(int money) {
money1 += money;
money2 += money;
}
@Override
public String toString() {
return money1 + ", " + money2;
}
}
-------------
package oop6;
public class AccountTest {
public static void main(String[] args) {
//System.out.println(Account.money1);//에러
System.out.println(Account.money2);
Account a1 = new Account(1000);
System.out.println(a1);
Account a2 = new Account(1000);
System.out.println(a2);
Account a3 = new Account(1000);
System.out.println(a3);
}
}
---------------------------------------------------------------------------------------------------
abstract :추상화 왜쓰냐? 무조건 그 타입,이름으로 메소드를 만들어 버리면 그 이름과 메소드로 무조건 만들어야 함
추상메소드가 하나라도 존재하면 클래스도 무조건 추상클래스로 해줘야 함
package oop4;
//추상클래스 -> 반드시 오버라이딩 해줘야 함
//@ : 오타치는거 발견해줌
public abstract class Shape {
double res; // 넓이 저장
//추상메소드 -> 바디가 없는 메소드
public abstract double area();
}
---------------------------------------------------------------------------------------------------------
표준을 만드는것, 규격을 만드는것 : 인터페이스
LgTV, SamsungTV.. -메소드가 다를수 있음
업캐스팅, 다운캐스팅이 가능해짐
변경이 가해질 클래스는 표준 인터페이스를 만들고, 미리 업캐스팅을 해놓는게 좋음
------
package oop7;
//저장이 잘되면 규격에 올바르게 사용한 TV임을 알수있다.
public class LgTV implements TV{
public void powerOn() {
System.out.println("LgTV : 전원을 켭니다");
}
public void powerOff() {
System.out.println("LgTV : 전원을 끕니다");
}
public void channelUp() {
System.out.println("LgTV : 채널을 올립니다");
}
public void channelDown() {
System.out.println("LgTV : 채널을 내립니다");
}
public void soundUp() {
System.out.println("LgTV : 소리를 키웁니다");
}
public void soundDown() {
System.out.println("LgTV : 소리를 줄입니다");
}
}
'학부 정리 > Java' 카테고리의 다른 글
18.01.11 자바 - 필기02 미완성 (0) | 2018.01.11 |
---|---|
18.01.11 자바 - 필기01 미완성 (0) | 2018.01.11 |
18.01.10 자바 - 필기01 (0) | 2018.01.10 |
[JAVA] 이클립스에서 ctrl+space 단축키 만들기 (0) | 2018.01.02 |
[자바복습] 6. 메소드 (0) | 2017.08.28 |