개발새발 블로그

[Java] polymorphism

컴퓨터/Java
package _05_polymorphism;
class A {int a=1;}
class B extends A {int b=2;}
class C extends A {int c=3;}
class D extends B {int d=4;}
class E extends C {int e=5;}

public class T01_polyRun {
	public static void main(String[] args) {
		// 자동 형변환 : 자식을 부모 타입으로 형변환
		B b = new B();
		C c = new C();
		D d = new D();
		E e = new E();
		
		A a1 = b;
		A a2 = c;
		A a3 = d;
		A a4 = e;
		
		System.out.println(b.a);
		System.out.println(b.b);
		
		System.out.println(a1.a);
		// System.out.println(a1.b); // A클래스 타입을 형변환했기 때문에 A클래스만 사용할 수 있다
		System.out.println(a2.a);  // c변수 사용불가
		System.out.println(a3.a);  // d변수 사용불가
		System.out.println(a4.a);  // e변수 사용불가
	}
}

 

 

package _05_polymorphism;
class Parent {
	void method1() {
		System.out.println("parent method1()");
	}
	void method2() {
		System.out.println("parent method2()");
	}
}

class Child extends Parent {
	@Override
	void method2() {
		System.out.println("child method2()");
	}
	void method3() {
		System.out.println("child method3()");
	}
}
public class T02_polyRun {

	public static void main(String[] args) {
		
		Child child = new Child();
		Parent parent = child;
	
		Parent parent2 = new Child();
		parent2.method1();
		
		// 오버라이딩한 메소드는 형변환과 상관없이 무조건 오버라이딩한 메소드 호출
		parent2.method2();
	}
}

 

 

package _05_polymorphism;
class Car {
	String color;
	int speed;
	void dirve() {
		System.out.println("운전중 빵빵!!!!");
	}
	void stop() {
		System.out.println("stop!!!");
	}
}
class FireCar extends Car {
	void water() {
		System.out.println("물을 뿌립니다!~~~");
	}
}
public class T03_polyRun {
	public static void main(String[] args) {
		FireCar fCar = new FireCar();
		fCar.dirve();
		fCar.water();
		fCar.stop();
		
		Car car = fCar;
		car.dirve();
		car.stop();
		// car.water(); 사용불가
		
		FireCar fCar2 = (FireCar)car;  // 부모타입 => 자식타입으로 강제형변환
		/*
		 * 주의
		    반드시 부모는 최초객체생성시 자식의 타입으로 객체 생성 되어 있어야 됨
		 */
		
		Car car2 = new Car();
		
		// 컴파일 오류(실행시 오류가 발생)
		// FireCar fCar3 = (FireCar)car2;
		
		// instanceof : 좌측의 객체가 우측의 타입으로 만들어졌느냐 검사(true)
		FireCar fCar3 = null;
		if(fCar3 instanceof FireCar) {
			fCar3 = (FireCar)car2;
		} else {
			System.out.println("변환할 수 없음");
		}
	}
}

'컴퓨터 > Java' 카테고리의 다른 글

[Java] super  (0) 2024.08.02
[Java] overriding  (0) 2024.08.02
[Java] 상속  (0) 2024.07.25
[Java] static  (0) 2024.07.25
[Java] 오버로딩  (0) 2024.07.25

[Java] super

컴퓨터/Java
package _04_super;

class Parent {
	int x = 10;
}
class Child extends Parent{
	int x = 20;
	void show() {
		int x = 30;
		System.out.println("x=" + x); // 지역변수 -> 인스턴스 변수 -> 부모 변수
		System.out.println("this.x=" + this.x);	// 인스턴스 변수 -> 부모 변수
		System.out.println("super.x=" + super.x);  // 부모변수
	}
}
public class T01_SuperRun {
	public static void main(String[] args) {
		Child c = new Child();
		c.show();
	}
}

 

package _04_super;

class Parent2 {
	int x = 10;
	void show() {
		System.out.println("부모클래스 메소드");
	}
}
class Child2 extends Parent2{
	int x = 20;
	void show() {
		System.out.println("자식클래스 메소드");
	}
	void display() {
		show();
		super.show();
		System.out.println("this.x=" + this.x);
		System.out.println("super.x=" + super.x);
	}
}
public class T02_SuperRun {
	public static void main(String[] args) {
		Child2 child = new Child2();
		child.display();
	}
}

 

 

package _04_super;

class Parent3 {
	int x;
	int z;
	Parent3() {
		System.out.println("부모생성자 호출");
		x = 10;
		z = 10;
	}
}
class Child3 extends Parent3{
	int x;
	int y;
	Child3() {
		System.out.println("자식생성자 호출");
		x = 10*10;
		y = 10*10;
	}
}
class GrandChild extends Child3{
	int x;
	GrandChild() {
		System.out.println("손자생성자 호출");
		x = 10*10*10;
	}
}
public class T03_SuperRun {
	public static void main(String[] args) {
		GrandChild child = new GrandChild();
		System.out.println(child.x);
		// System.out.println(child.super.x);  super는 상속받은 곳에서만 사용
		System.out.println(child.y);
		System.out.println(child.z);
	}
}

'컴퓨터 > Java' 카테고리의 다른 글

[Java] polymorphism  (0) 2024.08.02
[Java] overriding  (0) 2024.08.02
[Java] 상속  (0) 2024.07.25
[Java] static  (0) 2024.07.25
[Java] 오버로딩  (0) 2024.07.25

[Java] overriding

컴퓨터/Java
package _03_overriding;
class Loading {
	void show(String str) {
		System.out.println("부모클래스 메소드 : " + str);
	}
}
class LoadingChild extends Loading {
	// 오버로딩 : 매개변수의 자료형이 다름
	void show(int price) {
		System.out.println("자식클래스 메소드 : " + price);
	}
}
public class OverloadingRun {
	public static void main(String[] args) {
		LoadingChild lChild = new LoadingChild();
		lChild.show(25000);
		lChild.show("리액트");
	}
}

 

 

package _03_overriding;

class Over {
	void show(String str) {
		System.out.println("부모클래스 메소드 : " + str);
	}
}

class OverChild extends Over {
	void show(String abd) {
		System.out.println("자식클래스 메소드 : " + abd);
	}
}

public class OverridingRun {
	public static void main(String[] args) {
		OverChild oChild = new OverChild();
		oChild.show("자바 프로그래밍");
		
		Over over = new Over();
		over.show("오라클");

	}
}

'컴퓨터 > Java' 카테고리의 다른 글

[Java] polymorphism  (0) 2024.08.02
[Java] super  (0) 2024.08.02
[Java] 상속  (0) 2024.07.25
[Java] static  (0) 2024.07.25
[Java] 오버로딩  (0) 2024.07.25

[Java] 상속

컴퓨터/Java

main_inheritance.java

package _05_inheritance;
class A {
	int aa = 10;
}
class B extends A{
	int bb = 200;
}
class C extends A{
	int cc = 5000;
}
class D extends C{
	int dd = 30000;
}
public class T01_main_inheritance {
	public static void main(String[] args) {
		A a1 = new A();
		System.out.println("a1.aa : " + a1.aa);
		
		B b1 = new B();
		System.out.println("b1.aa : " + b1.aa);
		System.out.println("b1.bb : " + b1.bb);
		
		C c1 = new C();
		System.out.println("c1.aa : " + c1.aa);
		System.out.println("c1.cc : " + c1.cc);
		
		D d1 = new D();
		System.out.println("d1.aa : " + d1.aa);
		System.out.println("d1.cc : " + d1.cc);
		System.out.println("d1.dd : " + d1.dd);
	}
}

 

'컴퓨터 > Java' 카테고리의 다른 글

[Java] super  (0) 2024.08.02
[Java] overriding  (0) 2024.08.02
[Java] static  (0) 2024.07.25
[Java] 오버로딩  (0) 2024.07.25
[Java] 생성자를 이용하여 tv 객체 만들기  (0) 2024.07.25

[Java] static

컴퓨터/Java

api_static.java

package _06_static;

public class T01_api_static {
	// 인스턴스 필드(속성)
	int num = 10;			// 변수
	final int MAX = 25;		// 상수
	
	void method1() {  // 매개변수도 지역변수
		// 지역변수
		int me1 = 3;
		System.out.println(me1);
	}
	
	// 정적필드(속성)
	static int sNum = 20;
	static String sName = "이보영";
}

 

 

main_static.java

package _06_static;

public class T01_main_static {

	public static void main(String[] args) {
		T01_api_static as1 = new T01_api_static();
		T01_api_static as2 = new T01_api_static();
		
		as1.num = 1000;
		System.out.println("as1.num : " + as1.num);
		System.out.println("as2.num : " + as2.num);
		
		as1.sNum = 20000;
		System.out.println("as1.sNum : " + as1.sNum);
		System.out.println("as2.sNum : " + as2.sNum);

	}

}

 

 

api_static.java

package _01_static;

public class T01_api_static {
	// 인스턴스 필드
	public int numIn = 3;
	String nameIn = "이턴스";
	
	// 정적필드
	static int numSt = 10;
	static String nameSt = "김정적";
	
	// 인스턴스 메소드
	void me1() {
		// 인스턴스 메소드를 호출한다는 것은 이미 객체 생성되어 있다
		// 인스턴스 변수,메소드, 클래스 변수,메소 모두 호출가능
		System.out.println("인스턴스 메소드 me1()");
		System.out.println(numIn);
		System.out.println(numSt);
	}
	
	String me2() {
		System.out.println("인스턴스 메소드 me2()");
		return "me2()";
	}
	
	// 정적메소드
	static void sMe3() {
		// 클래스에 저장공간이 있으므로 객체를 생성하지 않고도 사용가능
		// 인스턴스 변수 사용 불가 : 인스턴스 변수는(메소드)는 반드시 
		//        객체가 생성 되어야만 사용할 수 있기 때문
		System.out.println("정적 메소드 sMe3()");
		System.out.println(numSt);
		// System.out.println(numIn);  사용불가
	}
	
	static String sMe4() {
		System.out.println("정적 메소드 sMe4()");
		return "sMe4()";
	}
}

 

 

main_static.java

package _01_static;

public class T01_main_static {
	int a;
	static int b;
	
	public static void main(String[] args) {
		int c;
		// System.out.println(a); 인스턴스변수는 반드시 객체를 생성해야만 사용가능
		// System.out.println(c); 지역변수를 초기화하지 않고 출력했기 때문
		
		// 클래스 변수, 클래스 메소드는 객체 생성 하지 않아도 사용가능
		System.out.println(b);
		System.out.println(T01_api_static.nameSt);
		System.out.println(T01_api_static.sMe4());
		System.out.println("----------------------------");
		
		// 인스턴스 변수, 인스턴스 메소드는 반드시 객체를 생성해야 사용가능
		T01_api_static s1= new T01_api_static();
		System.out.println(s1.nameIn);
		System.out.println(s1.me2());
		// 객체에서도 클래스 변수, 클래스 메소드도 사용가능
		System.out.println(s1.numSt);
		System.out.println(s1.sMe4());	
	}
}

main_static.java

'컴퓨터 > Java' 카테고리의 다른 글

[Java] overriding  (0) 2024.08.02
[Java] 상속  (0) 2024.07.25
[Java] 오버로딩  (0) 2024.07.25
[Java] 생성자를 이용하여 tv 객체 만들기  (0) 2024.07.25
[Java] 차 객체 만들기  (0) 2024.07.25

[Java] 오버로딩

컴퓨터/Java

main_MethodOverloading.java

package _03_overloading;

class Over {
	// 오버로딩의 조건
	// 1. 메서드 이름이 같아야 한다
	// 2. 매개변수의 개수가 다르던지 자료형이 달라야 한다 
	int add() {  
		return 0;
	}
	int add(int num1) {  
		return num1;
	}
	int add(int num1, int num2) {
		return num1 + num2;
	}
	double add(int num1, double num2) {  // 리턴 자료형은 상관없음
		return num1 + num2;
	}
	String add(String name) {
		return "이름 : " + name;
	}
}

public class T01_main_MethodOverloading {
	public static void main(String[] args) {
		Over o1 = new Over();
		System.out.println(o1.add(3,5));
		System.out.println(o1.add(3,5.0));
		System.out.println(o1.add());
		System.out.println(o1.add(7));
		System.out.println(o1.add("홍길동"));
	}
}

 

 

main_ConOverloading.java

package _03_overloading;

class Aaa {
	int num;
	double dou;
	String name;
	
	Aaa() {
		num = 1;
		dou = 1.0;
		name = "홍길동";
		System.out.println("매개변수가 없는 생성자");
	}
	
	Aaa(int num) {
		this.num = num;
		dou = 1.0;
		name = "홍길동";
		System.out.println("매개변수가 1개인 생성자");
	}
	Aaa(int num, double dou) {
		this.num = num;
		this.dou = dou;
		name = "홍길동";
		System.out.println("매개변수가 2개인 생성자(int,double)");
	}
	Aaa(int num, String name) {
		this.num = num;
		dou = dou;
		this.name = name;
		System.out.println("매개변수가 2개인 생성자(int,String)");
	}
	Aaa(int num, double dou, String name) {
		this.num = num;
		this.dou = dou;
		this.name = name;
		System.out.println("매개변수가 3개인 생성자");
	}
	
	// 가변인자 : 들어올 인자의 갯수를 모를때
	// (int... str) : 인자는 0개 이상
	void method(int... num) {
		System.out.println("인자가 0개 이상");
	}
	// (String name, String... str) : 인자는 1개 이상
	void method(String name, String... str) {
		System.out.println("인자가 반드시 1개 이상");
	}

	// 오류 : 모든 인자는 가변인자에 들어감
	/*
	void method(String... str, String num) {
		
	}
	*/
}

public class T02_main_ConOverloading {
	public static void main(String[] args) {
		Aaa a1 = new Aaa();
		Aaa a2 = new Aaa(5, 10.56, "나야나");
		Aaa a3 = new Aaa(10, "문자열");
		Aaa a4 = new Aaa(50, 50.1234);
		a4.method(5);
		a4.method("문자");
		a4.method();
	}
}

 

 

ThisConOverloading.java

package _03_overloading;

class ThisAaa {
	int num;
	double dou;
	String name;
	
	// 생성자에서 this() : 다른 생성자 호출
	// this()는 맨 첫줄에 있어야 됨
	ThisAaa() {
		this(1, 1.0, "홍길동");
		System.out.println("매개변수가 없는 생성자");
	}
	ThisAaa(int num) {
		this(num, 1.0, "홍길동");
		System.out.println("매개변수가 1개인 생성자");
	}
	ThisAaa(int num, double dou) {
		this(num, dou, "홍길동");
		System.out.println("매개변수가 2개인 생성자(int,double)");
	}
	ThisAaa(int num, double dou, String name) {
		this.num = num;
		this.dou = dou;
		this.name = name;
		System.out.println("매개변수가 3개인 생성자");
	}
}

public class T03_main_ThisConOverloading {
	public static void main(String[] args) {
		ThisAaa a1 = new ThisAaa();
		/*ThisAaa a2 = new ThisAaa(5, 10.56, "나야나");
		ThisAaa a4 = new ThisAaa(50, 50.1234);*/
	}
}

'컴퓨터 > Java' 카테고리의 다른 글

[Java] 상속  (0) 2024.07.25
[Java] static  (0) 2024.07.25
[Java] 생성자를 이용하여 tv 객체 만들기  (0) 2024.07.25
[Java] 차 객체 만들기  (0) 2024.07.25
[Java] TV 클래스 만들기, TV 객체 사용하기  (0) 2024.07.17

[Java] 생성자를 이용하여 tv 객체 만들기

컴퓨터/Java

api_tv.java

package _02_constructor;

public class T01_api_tv {
	String company;
	String model;
	int channel;
	
	// 기본 생성자
	/*
	T01_api_tv() {
		System.out.println("기본 생성자");
	}
	*/
	
	// 매개변수가 1개인 생성자
	/*
	T01_api_tv(String company) {
		this.company = company;
	}
	*/
	
	// 매개변수가 3개인 생성자
	T01_api_tv(String company, String modelName, int channel) {
		this.company = company;
		model = modelName;
		this.channel = channel;
	}
}

 

 

main_tv.java

package _02_constructor;

public class T01_main_tv {

	public static void main(String[] args) {
		/*  기본생성자 사용시
		T01_api_tv tv1 = new T01_api_tv();
		System.out.println("tv1의 채널 : " + tv1.channel);
		System.out.println();
		
		T01_api_tv tv2 = new T01_api_tv();
		System.out.println("tv2의 채널 : " + tv1.channel);
		*/
		
		// 매개변수가 1개인 생성자 사용
		/*
		T01_api_tv tv3 = new T01_api_tv("삼성");
		System.out.println("tv1의 회사 : " + tv3.company);
		
		T01_api_tv tv4 = new T01_api_tv("LG");
		System.out.println("tv2의 회사 : " + tv4.company);
		*/
		
		// 매개변수가 3개인 생성자 사용하여 객체 생성
		T01_api_tv tv5 = new T01_api_tv("삼성", "FULL HD", 70);
		System.out.println("tv5 :" + tv5.company + ", " + tv5.model);
		T01_api_tv tv6 = new T01_api_tv("울트라", "LG", 50);
		System.out.println("tv6 :" + tv6.company + ", " + tv6.model);
	}

}

'컴퓨터 > Java' 카테고리의 다른 글

[Java] static  (0) 2024.07.25
[Java] 오버로딩  (0) 2024.07.25
[Java] 차 객체 만들기  (0) 2024.07.25
[Java] TV 클래스 만들기, TV 객체 사용하기  (0) 2024.07.17
[Java] 자동차 클래스 만들기, 자동차 객체 사용하기  (0) 2024.07.17

[Java] 차 객체 만들기

컴퓨터/Java

api_car.java

package _01_obj;

public class T01_api_car {
	String company = "삼성";
	String model = "SM7";
	String color = "흰색";
	int speed;
	boolean power;
	
	void power() {
		power = !power;
		if(power)
			System.out.println("시동을 켭니다");
		else
			System.out.println("시동을 끕니다");
	}

	int speed(int speed) {
		this.speed += speed;
		return this.speed;
	}
	
	int speedDown() {
		speed -= 5;
		return speed;
	}
}

 

 

main_car.java

package _01_obj;

public class T01_main_car {

	public static void main(String[] args) {
		T01_api_car car1 = new T01_api_car();
		T01_api_car car2 = new T01_api_car();
		
		car1.power();
		int speed = car1.speed(100);
		System.out.println("현재 속도 : " + speed);
		System.out.println("현재 속도 : " + car1.speed(100));
		
		speed = car1.speedDown();
		System.out.println("현재 속도 : " + speed);
		System.out.println("현재 속도 : " + car1.speedDown());
		
		car1.color = "검정색";
		System.out.println(car1.color);
		
		String car1Color = car1.color;
		System.out.println(car1Color);
		System.out.println("----------------------------------");
		
		System.out.println("car2의 현재속도 : " + car2.speed);
		System.out.println("car2의 색상 : " + car2.color);
	}
}

[Java] TV 클래스 만들기, TV 객체 사용하기

컴퓨터/Java
package _01_obj;

public class T01_api_car {
	String company = "삼성";
	String model = "SM7";
	String color = "흰색";
	int speed;
	boolean power;
	
	void power() {
		power = !power;
		if(power)
			System.out.println("시동을 켭니다");
		else
			System.out.println("시동을 끕니다");
	}

	int speed(int speed) {
		this.speed += speed;
		return this.speed;
	}
	
	int speedDown() {
		speed -= 5;
		return speed;
	}
}
package _01_obj;

public class T01_main_car {

	public static void main(String[] args) {
		T01_api_car car1 = new T01_api_car();
		T01_api_car car2 = new T01_api_car();
		
		car1.power();
		int speed = car1.speed(100);
		System.out.println("현재 속도 : " + speed);
		System.out.println("현재 속도 : " + car1.speed(100));
		
		speed = car1.speedDown();
		System.out.println("현재 속도 : " + speed);
		System.out.println("현재 속도 : " + car1.speedDown());
		
		car1.color = "검정색";
		System.out.println(car1.color);
		
		String car1Color = car1.color;
		System.out.println(car1Color);
		System.out.println("----------------------------------");
		
		System.out.println("car2의 현재속도 : " + car2.speed);
		System.out.println("car2의 색상 : " + car2.color);
		
		
		
	}

}

'컴퓨터 > Java' 카테고리의 다른 글

[Java] 생성자를 이용하여 tv 객체 만들기  (0) 2024.07.25
[Java] 차 객체 만들기  (0) 2024.07.25
[Java] 자동차 클래스 만들기, 자동차 객체 사용하기  (0) 2024.07.17
[Java] method  (0) 2024.07.17
[Java] 객체  (0) 2024.07.17

[Java] 자동차 클래스 만들기, 자동차 객체 사용하기

컴퓨터/Java
package _03_tv;

public class T01_api_tv {
	String company = "LG";
	String model = "울트라 FULL HD";
	int inch = 65;
	int volume;		// 기본값 : 0
	int channel = 2;
	boolean power;  // 기본값 : false
	
	void power() {
		power = !power;
		if(power)
			System.out.println("tv를 켭니다");
		else
			System.out.println("tv를 끕니다");
	}	
	int channelUp() {
		channel++;
		return channel;
	}
	int channelDown() {
		channel--;
		return channel;
	}
	int volume(int volumeInput) {
		volume = volumeInput;
		return volume;
	}
}
package _03_tv;

public class T01_main_tv {

	public static void main(String[] args) {		
		T01_api_tv tv1 = new T01_api_tv();
		System.out.println("회사명 : " + tv1.company);
		System.out.println("모델명 : " + tv1.model);
		System.out.println(tv1.inch + "인치");

		tv1.power();
		
		//System.out.println("tv상태 : " + tv1.power);
		System.out.println("현재 채널 : " + tv1.channelUp());
		System.out.println("현재 채널 : " + tv1.channelUp());
		System.out.println("현재 채널 : " + tv1.channelDown());
		System.out.println("볼륨 : " + tv1.volume(12));
		tv1.power();
		// System.out.println("tv상태 : " + tv1.power);
	}

}

'컴퓨터 > Java' 카테고리의 다른 글

[Java] 차 객체 만들기  (0) 2024.07.25
[Java] TV 클래스 만들기, TV 객체 사용하기  (0) 2024.07.17
[Java] method  (0) 2024.07.17
[Java] 객체  (0) 2024.07.17
[Java] 향상된 for문  (0) 2024.07.16