[0] 자바 마지막 공부!!
// 변수 : 변하는 수
int num = 10;
// 상수 : 변하지 않는 수를 의미 (대문자 사용, final 추가)
final int NUM = 100;
// this : 현재 클래스의 필드값
// super : 상속받은 클래스의 필드값
// final : 더 이상 수정할 수 없는, 마지막이라는 의미
public static void main(String[] args) {
// 객체 생성
_01_final fin = new _01_final();
// 변수값 변경
fin.num = 50;
System.out.println("num의 값은 : " + fin.num);
// 상수값 변경
// fin.NUM = 500;
// NUM은 final 지정했기 때문에 값을 바꿀수 없다.
}
// 상수 값은 어디서 사용하든 변하지 않는 값이다
[1] 상속예제 개념
// (1)Phone이라는 추상클래스를 만든다!! // 오버라이드 지정할때 무조건 toString() xx >> phone.size, phone.price ( reture값 지정해주기!!)
public abstract class Phone {
String size;
String price;
// 추상메소드
public abstract void OS();
public abstract void Tongsinsa();
public abstract void Accessory();
@Override
public String toString() {
return "모델 = {" +
"size=" + size +
", price=" + price +
'}';
}
}
// (2) Apple이라는 클래스를 만들고 Phone이라는 부모클래스를 상속한다.
// 상속 기억!!!
public class Apple extends Phone{
@Override
public void OS() {
System.out.println("IOS 입니다");
}
@Override
public void Tongsinsa() {
System.out.println("LGU+ 입니다");
}
@Override
public void Accessory() {
System.out.println("카드지갑");
}
}
// (2) Samsung이라는 클래스를 만들고 Phone이라는 부모클래스를 상속한다.
public class Samsung extends Phone{
@Override
public void OS() {
System.out.println("안드로이드 입니다");
}
@Override
public void Tongsinsa() {
System.out.println("SKT 입니다");
}
@Override
public void Accessory() {
System.out.println("투명케이스");
}
}
// (2) Huawei이라는 클래스를 만들고 Phone이라는 부모클래스를 상속한다.
public class Huawei extends Phone{
@Override
public void OS() {
System.out.println("안드로이드 입니다.");
}
@Override
public void Tongsinsa() {
System.out.println("KT 입니다");
}
@Override
public void Accessory() {
System.out.println("캐릭터케이스");
}
}
// (3) PhoenMethod이라는 클래스를 만들고 코드를 간결하게 해주게 util코드를 만들어준다
public class PhoneUtil {
public void PhoneMethod(Phone phone){
System.out.println(phone);
phone.OS();
phone.Tongsinsa();
phone.Accessory();
}
}
// (4) PhoneMain이라는 클래스를 만들고 출력문 선언해준다.
public class PhoneMain {
public static void main(String[] args) {
Apple apple = new Apple();
Huawei huawei = new Huawei();
Samsung samsung = new Samsung();
PhoneUtil Util = new PhoneUtil();
System.out.println((1));
apple.size = "6.1\"";
apple.price = "1500000";
System.out.println(apple);
apple.OS();
apple.Tongsinsa();
apple.Accessory();
System.out.println();
huawei.size = "6.5\"";
huawei.price = "1550000";
System.out.println(huawei);
huawei.OS();
huawei.Tongsinsa();
huawei.Accessory();
System.out.println();
samsung.size = "6.8\"";
samsung.price = "1580000";
System.out.println(samsung);
samsung.OS();
samsung.Tongsinsa();
samsung.Accessory();
System.out.println();
System.out.println((2));
Phone phone = null;
phone = new Apple();
phone.OS();
phone.Tongsinsa();
phone.Accessory();
System.out.println();
System.out.println((3));
System.out.println("Apple");
apple.size = "6.1\"";
apple.price = "1500000";
Util.PhoneMethod(apple);
System.out.println();
System.out.println("Huawei");
huawei.size = "6.5\"";
huawei.price = "1550000";
Util.PhoneMethod(huawei);
System.out.println();
System.out.println("Samsung");
samsung.size = "6.8\"";
samsung.price = "1580000";
Util.PhoneMethod(samsung);
}
}
// (1) 객체생성방법 // (2) 자동타입변환 방법 // (3) 유틸클래스 사용방법 ( 기억하기!)
// 출력
[2] 인터페이스 개념
[1] 인터페이스 구조
public interface 인터페이스이름 {
// 필드
public static final 데이터타입 상수이름 :
// 메소드 >> 중괄호와 세미클론!!!
public abstract 데이터타입 메소드이름();
}
[2] 인터페이스 특징
- 인터페이스는 누구나 접근이 가능하도록 public 설정
- 객체의 다형성 구현하는데 용이
- 인터페이스의 구성요소
(1) 상수필드
: 일반적인 필드로 선언해도 컴파일 과정에서 static final 자동으로 붙음(클래스와 다른점)
: ex) int num = 10; >> static final int num = 10;
(2) 추상메소드
: 일반적인 메소드를 선언해도 컴파일 과정에서 abstract 자동으로 붙음
: { 구현부 } 없이 메소드 이름만 선언하고 세미콜론(;)을 작성한다.
(3) defoult메소드 >> 인터페이스에서 무조건 사용!!! 해야만 메소드를 사용가능!!
: { 구현부 } 를 가지는 메소드
: 기존 인터페이스를 확장해서 새로운 기능을 추가하기 위함
(4) static메소드
: 인터페이스를 객체화 하지 않고도 직접 호출 가능
- 부모클래스 객체 = new 자식클래스();
인터페이스 객체 = new 구현클래스();
-
- interface >> interface로 : extends 사용
interface >> class로 : implements 사용(여러개 사용가능)
*/
// (1) 상수필드
// (1) 상수필드 : static을 사용하지 않아도 자동으로 붙음
int MAX_VOLUME = 50;
int MIN_VOLUME = 0;
// (2) 추상메소드
// (2) 추상메소드 : abstract를 사용하지 않아도 자동으로 붙음
// interface와 class 비교
void turnOn(); // abstract void turnOn();
void turnOff(); // abstract void turnOff();
void setVolume(int volume); // abstract void setVolume(int volume);
// (3) default메소드
// (3) default 메소드
public default void setMute(boolean mute){
if(mute){
System.out.println("음소거");
} else {
System.out.println("음소거 해체");
}
}
// (4) static메소드
// (4) static메소드
public static void changeBattery(){
System.out.println("건전지 교체");
}
}
// smartTv를 상속 받기 위한 internetSearch 인터페이스를 만들어준다
public interface internetSearch {
// 추상메소드
void search(String url);
}
// implements 상속(인터페이스 상속) Audio 클래스생성
// 1. 필드선언 2. 추상메소드 오버라이딩 생성(재정의)
// RemoteControl 인터페이스 상속
public class Audio implements RemoteControl{
// 필드 선언
private int volume;
// 추상메소드 오버라이딩 생성 (재정의) : 인터페이스에서 선언한 추상메소드를 재정의한다.
@Override
public void turnOn() {
System.out.println("오디오 전원을 켭니다. ");
}
@Override
public void turnOff() {
System.out.println("오디오 전원을 끕니다. ");
}
@Override /// 인터페이스라는 객체 생성 없이도 사용가능!!!
public void setVolume(int volume) {
if (volume >= RemoteControl.MAX_VOLUME){
this.volume = RemoteControl.MAX_VOLUME;
// volume : 우리가 입력한 불륨값
// this.volume : 클래스에서 선언해준 필드값(실제 저장될 불륨값) 필드값 : 10
} else if(volume <= RemoteControl.MIN_VOLUME) {
this.volume = RemoteControl.MIN_VOLUME;
} else {
this.volume = volume;
}
System.out.println("현재 오디오 볼륨 : " + this.volume);
}
@Override
public void setMute(boolean mute) {
if(mute){
System.out.println("오디오를 음소거 합니다.");
} else {
System.out.println("오디오의 음소거를 해체합니다.");
}
}
}
// implements 상속(인터페이스 상속) Television 클래스 생성
// 1. 필드선언 2. 추상메소드 오버라이딩 생성(재정의)
public class Television implements RemoteControl {
private int volume;
@Override
public void turnOn() {
System.out.println("티비 전원을 켭니다. ");
}
@Override
public void turnOff() {
System.out.println("티비 전원을 끕니다. ");
}
@Override
public void setVolume(int volume) {
if (volume >= RemoteControl.MAX_VOLUME){
this.volume = RemoteControl.MAX_VOLUME;
} else if(volume <= RemoteControl.MIN_VOLUME){
this.volume = RemoteControl.MIN_VOLUME;
} else {
this.volume = volume;
}
System.out.println("현재 티비 볼륨 : " + this.volume);
}
@Override
public void setMute(boolean mute) {
if(mute){
System.out.println("티비소리를 음소거합니다.");
} else {
System.out.println("티비소리를 음소거해체합니다.");
}
}
}
// smartTv 클래스 생성
// implements 상속(인터페이스 상속) RemoteControl, internetSearch
// 1. 필드선언 2. 추상메소드 오버라이딩 생성(재정의)
public class smartTv implements RemoteControl, internetSearch{
int volume;
@Override
public void turnOn() {
System.out.println("tv 전원 on");
}
@Override
public void turnOff() {
System.out.println("tv 전원 off");
}
@Override
public void setVolume(int volume) {
if (volume >= RemoteControl.MAX_VOLUME){
this.volume = RemoteControl.MAX_VOLUME;
} else if(volume <= RemoteControl.MIN_VOLUME){
this.volume = RemoteControl.MIN_VOLUME;
} else {
this.volume = volume;
}
System.out.println("현재 티비 볼륨 : " + this.volume);
}
@Override
public void setMute(boolean mute) {
if (mute) {
System.out.println("티비소리를 음소거합니다.");
} else {
System.out.println("티비소리를 음소거해체합니다.");
}
}
@Override
public void search(String url) {
System.out.println(url + "에서 내용을 검색합니다.");
}
}
// RmoteMain 클래스 생성
(1) 전원 on
(2) 볼륨 50 or -5
(3) 음소거
(4) 음소거 해체
(5) 전원 off
*/
// 1. 객체생성방법(오디오)
// 1. 객체생성방법(오디오)
Audio audio = new Audio();
System.out.println("(1)객체생성 방법");
audio.turnOn();
audio.setVolume(50);
audio.setMute(true);
audio.setMute(false);
audio.turnOff();
System.out.println();
// 2. 자동타입변화(tv)
// 2. 자동타입변화(tv)
System.out.println("(2)자동타입변화 방법");
Television television = null;
television = new Television();
television.turnOn();
television.setVolume(-5);
television.setMute(true);
television.setMute(false);
television.turnOff();
// 3. smartTv 인터페이스 두개 사용해서 출력
// 두가지 인터페이스를 이용해서 사용가능
smartTv smartTv = new smartTv();
smartTv.turnOn();
smartTv.setVolume(7);
smartTv.setMute(true);
smartTv.setMute(false);
smartTv.search("네이버");
smartTv.turnOff();
// 출력
[3] (*) 다이아몬드로 만들기
import java.util.Scanner;
public class Diamond {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("다이아몬드의 크기를 입력하세요(홀수): ");
int size = input.nextInt();
if (size % 2 ==1){
System.out.println("게임시작");
for (int i = 0; i < size; i++) {
for (int j = 0; j < size - i; j++) {
System.out.print(" ");
}
for (int k = 0; k < 2 * i + 1; k++) {
System.out.print("*");
}
System.out.println();
}
for (int i = size - 2; i >= 0; i--) {
for (int j = 0; j < size - i; j++) {
System.out.print(" ");
}
for (int k = 0; k < 2 * i + 1; k++) {
System.out.print("*");
}
System.out.println();
}
} else {
System.out.println("다시 적으세요");
}
}
}
//출력
+
// SQL 설치
'IT코딩공부!' 카테고리의 다른 글
#13 DB(DDL,DML,DCL)공부 (0) | 2023.04.06 |
---|---|
#12 DB공부 시작! (0) | 2023.04.05 |
#10 형성 : day9 복습, 하나의 객체(info)에서 // 여러타입을 참조할 수 있는 방식을 제공해준다. (+추상클래스 + Util) (0) | 2023.04.03 |
#9 메소드의 변환값(return) (0) | 2023.03.31 |
#8 day7복습, 팀별 과제 수행, Intelli J 설치 및 이클립스 적용 (0) | 2023.03.30 |