JAVA/JAVA 수업

[JAVA & DB] 21.06.09

샛별KIM 2021. 6. 9. 17:19

부모자식 간 어떤 모양으로도 변할 수 있는것을 다형성! 이라고 합니다.

//추상화
/*
 * 클래스 만드는 목적? -> 인스턴스 생성을 위해
 * 추상화는 클래스를 대략적으로 만들어서 인스턴스를 생성할 수 없어요.
 * 왜 존재해야 하지?
 * 
 * 자바에서는 추상화라는 개념을 구현할 수 있습니다.
 * 일단 추상이라는 의미부터 보겠습니다.
 * 추상이라는 것은 현실화 되어질 필요가 없는 클래스를 말합니다.
 * 객체생성 안함! 상속을 위해 존재한다
 * 
 * 자바에서는 객체지향을 통해 프로그램이 실행되는데
 * 이 추상이라는 개념을 클래스에 적용시키면 
 * 자신의 인스턴스를 발생시킬 수 없는 형태로 만들어집니다.
 * 
 * 이렇게 인스턴스화 할 필요는 없지만 상속개념에서 중요한 위치를
 * 가지는 클래스를 보통 추상클래스로 선언하여 사용합니다.
 * 
 * 
 * 추상 클래스 선언 규칙
 * 
 * 1.  클래스에 정의된 메소드 중 추상 메소드가 하나라도 있다면
 *  해당 클래스는 무조건 추상 클래스가 됩니다.
 * 
 * 2.  추상 메소드는 메소드 바디가 없는 형태 {}이고
 *  abstract라는 키워드를 리턴 타입 앞에 선언합니다.
 *  파라미터 괄호 뒤에 세미콜론;을 붙여줍니다.
 *  ex. public abstract void print();
 *  괄호 붙으면 무조건 메소드!
 * 
 * 3. 추상 클래스는 자신의 인스턴스를 발생시킬 수 없습니다.
 *  하지만 생성자, 메소드, 필드는 모두 선언/정의 가능합니다.
 *  상속도 가능합니다.
 *  또한 super type으로 전개 가능하므로 다형성도 적용 가능합니다.
 * 
 * 4. 만약 추상 메소드가 하나라도 없을 때 클래스를 추상화 하고 싶다면
 *  abstract라는 키워드를 붙여 추상화 시킬 수 있습니다.
 * 
 */

abstract class Animal{ //부모 클래스, 슈퍼 클래스, 상위 클래스
String name;
int age; //필드 생성

//생성자

public abstract void sleep(); //꼭 필요하니까 나를 내려받는 클래스에서 무조건 만들어!
public abstract void eat();
}

class Cat extends Animal{ //자식 클래스, 하위 클래스

@Override
public void sleep() { //추상화 되었으니까(완벽하지 못하니까) 여기서 만들어 채워주세요
} //이거에서 진화되는게 인터페이스!!

@Override
public void eat() { //부모에게 없는 괄호만 붙여줘도 생성
}

}

class Dog extends Animal{

@Override
public void sleep() {
}

@Override
public void eat() {


}

public class Abstraction {
public static void main(String[] args) {
Cat cat = new Cat();
Dog dog = new Dog();
// Animal animal = new Animal(); //이렇게 슈퍼 클래스를 객체화 하지 못하게 하는 것이 추상화
}
}

//////////////////////추상화였습니다,

상속. 추상화. 최상위타입(이게 다형성) 등 zoo패키지 확인 후 정리!

//다형성
/*
 * 다양한 형태로 변할 수 있는 것.
 * 
 * 다형성은 동적 바인딩(런타임 때 최종 타입이 결정되는 것)이
 * 지원되어야 합니다.
 * 
 * 다형성:
 * 같은 타입이지만 실행결과가 다양한 객체를 이용할 수 있는 성질을
 * 말합니다. 코드 측면에서 보면 다형성은 하나의 타입에 여러 객체를
 * 대입함으로써 다양한 기능을 이용할 수 있도록 해줍니다.
 * 다형성을 위해 자바는 부모 클래스로 타입 변환을 허용해줍니다.
 * 즉 부모타입에 모든 자식 객체가 대입될 수 있습니다.
 * 이것을 이용하면 객체는 부품화가 가능합니다.
 * 
 */
-------Polymorphism.java 참고!

//인터페이스
/*
 * 다른 언어에서 찾기 힘든 자바의 고급 기능입니다.
 * 단일 상속 : 한 번에 하나의 상속만 받을 수 있어요
 * 단일상속의 한계를 극복하기 위해 인터페이스!
 * 여러개를 동시 상속, 다중 상속!
 * 
 * 인터페이스란?
 * 추상 클래스 = 대략 만들어진, 추상적인, 추상화
 * 추상 클래스는 일반 메소드와 추상 메소드 둘 다 가질 수 있습니다.
 * 인터페이스는 오로지 추상 메소드와 상수만 가질 수 있습니다.
 * 
 * 인터페이스 내에 존재하는 메소드는 무조건 
 *  public abstract로 선언 됩니다.
 * 
 * 인터페이스 내에 존재하는 변수는 무조건
 *  public static final로 선언 됩니다.
 * 
 * 인터페이스는 다중상속과 비슷한 기능을 제공합니다.
 * 
 * 인터페이스를 잘 쓰면 편해집니다.
 * 
 * 인터페이스는 외부를 서로 이어주는 통로 역할을 합니다.
 * 
 * 생성하기
 * interface 인터페이스명{ 
 *  public abstract void(); //추상 메소드
 * }
 * 
 * 사용하기
 * 
 * class 클래스명 implement 인터페이스명, 인터페이스명...{
 *  인터페이스에서 미구현 된 메소드 오버라이드;
 * }
 *  
 *  인터페이스 구현 시 주의할 점
 *  클래스에 인터페이스 상속 시 인터페이스 내에 정의된 모든
 *  추상 메소드를 구현해야 합니다.
 *  
 *  상속과 인터페이스의 차이점?
 *  상속 class A extends B :
 *   B라는 클래스를 상속받아 A의 기능을 더한다.
 *   순수 상속 : 부모로부터 모든 권한과 재산 능력을 가져오기
 *  
 *   인터페이스 class A implements B :
 *   B라는 인터페이스를 구현하겠다.
 *   권한 상속 : 인터페이스만 가져오기 (비어있는 것을 가져와서
 *   내가 그 속을 만들기)
 */

///////////////DB

https://mariadb.com/
***User settings
 New root password
: 1234, 밑에 Enable check 해제! Use UTF는 체크

3306 버퍼 사이즈 :1013 기본으로..
cmd창으로 켤 수 있다!
cd c:\program files\mariadb 10.5\bin\mariadb -u root -p
까지 입력하면 cmd창으로 가능!


//////DB명령어
create database joongang;
show databases;
show tables;

create table member(
number INT,
name VARCHAR(10),
tel VARCHAR(15)
);

explain member;

insert into member value(1, '홍길동', '010-1234-5678');
또는 insert into member (number, name) values(1, '홍길동');
또는 insert into member values(1, 'maria');

select * from member;

drop database joongang;