package kr.s22.object.abs;
//추상 클래스
//미완성된 개념으로 단독으로 객체 생성이 불가능하고 일반적으로 자식 클래스에
//상속 되어져서 사용함.
//추상 클래스는 일반적으로 공통된 동작을 가지는 객체들을 그룹화하는 데 사용됨. 즉, 추상 클래스는 구체적인 객체의 공통된 특징을 추상화함.
//추상 클래스는 추상 메서드를 가질 수 있습니다. 추상 메서드는 선언만 되어 있고, 실제 구현은 하위 클래스에서 이루어져야 합니다.
//일반 메서드를 가질 수 있으며, 이는 하위 클래스에서 오버라이딩할 필요가 없습니다.
abstract class A{
private int x;
public void setX(int x) {
this.x = x;
}
public int getX() {
return x;
}
}
//자식 클래스
class B extends A {
int b = 200;
}
public class AbstractMain01 {
public static void main(String[] args) {
//A ap = new A(); //추상클래스는 부모클래스의 역할은 수행 가능하지만 직접 객체 생성은 불가능하다.
//<7번 라인의 abstract을 사용함으로써 안됨.>
B bp = new B();
bp.setX(100);
System.out.println(bp.getX());
System.out.println(bp.b);
}
}
100
200
package kr.s22.object.abs;
//추상 클래스 -> 사용하는 이유: 강요하기 위해서 일반 메서드는 강요하는 것이 없다. 자식 메서드마다 구현할 것들이 다 다르기 때문에 꼭 해야될 것들만 추상 메서드 상태로 두는것
abstract class A2{
private int x;
public void sexX(int x) {
this.x = x;
}
public int gexX() {
return x;
}
//추상 메서드 -> 구현이 없는 메서드 {중괄호가 없음.}
public abstract void make();
}
//자식 클래스
class B2 extends A2 { //B2에 빨간밑줄이 있다면 추상 메서드가 완벽히 구현이 되지않았다는 뜻. 추상메서드는 완벽히 구현되지 않으면 메모리에 올라가지 않기 때문이다.
//부모 클래스의 추상 메서드를 구현 ->을 하면 B2의 빨간밑줄이 없어진다.
@Override //재정의 한 것은 아니지만 재정의 방법을 사용한다.
public void make() { //abstract빼고 그대로 쓰면됨.
System.out.println("make");
}
}
public class AbstractMain02 {
public static void main(String[] args) {
B2 bp =new B2();
bp.make();
}
}
make
package kr.s22.object.abs;
abstract class Animal {
public void breathe() {
System.out.println("숨을 쉬다");
}
//추상메서드
public abstract void sound();
}
//자식클래스
class Dog extends Animal {
//Animal의 추상메서드 sound 구현
@Override
public void sound() {
System.out.println("개는 멍멍멍~~");
}
}
class Cat extends Animal {
//Animal의 추상 메서드 sound 구현
@Override
public void sound() {
System.out.println("고양이는 야옹야옹~~");
}
}
public class AbstractMain03 {
public static void main(String[] args) {
Dog d = new Dog();
d.breathe();
d.sound();
System.out.println("-----------");
Cat c = new Cat();
c.breathe();
c.sound();
}
}
숨을 쉬다
개는 멍멍멍~~
-----------
숨을 쉬다
고양이는 야옹야옹~~
package kr.s22.object.abs;
//추상 클래스
abstract class AbsEx{
int a = 100; //변수
public int getA() {//일반 메서드
return a;
}
//추상 메서드
abstract public int getB();
public abstract int getC();
}
//추상 클래스
abstract class AbsEx2 extends AbsEx{//AbsEx가 빨간 밑줄이 생긴다.
//추상클래스를 추상클래스에 상속하면 추상메서드 구현의 의무가 없음
String msg = "신세계";
//추상 메서드
public abstract String getMsg();
//부코를래스의 추상메서드 구현
@Override
public int getB() {
return 200;
}
}
public class AbstractMain04 extends AbsEx2{
//부모클래스의 추상메서드를 구현
@Override
public int getC() {
return 300;
}
@Override
public String getMsg() {
return msg;
}
public static void main(String[] args) {
AbstractMain04 am = new AbstractMain04();
System.out.println(am.getA());
System.out.println(am.getB());
System.out.println(am.getC());
System.out.println(am.getMsg());
}
}
100
200
300
신세계
'쌍용교육(JAVA) > JAVA' 카테고리의 다른 글
쌍용교육 -JAVA 수업 12일차 enum (0) | 2024.04.11 |
---|---|
쌍용교육 -JAVA 수업 12일차 Interface인터페이스 (0) | 2024.04.11 |
쌍용교육 -JAVA 수업 11일차 StringTokenizer (0) | 2024.04.11 |
쌍용교육 -JAVA 수업 11일차 Calendar,Date (0) | 2024.04.11 |
쌍용교육 -JAVA 수업 11일차 Wrapper(boxing) (0) | 2024.04.11 |
package kr.s22.object.abs;
//추상 클래스
//미완성된 개념으로 단독으로 객체 생성이 불가능하고 일반적으로 자식 클래스에
//상속 되어져서 사용함.
//추상 클래스는 일반적으로 공통된 동작을 가지는 객체들을 그룹화하는 데 사용됨. 즉, 추상 클래스는 구체적인 객체의 공통된 특징을 추상화함.
//추상 클래스는 추상 메서드를 가질 수 있습니다. 추상 메서드는 선언만 되어 있고, 실제 구현은 하위 클래스에서 이루어져야 합니다.
//일반 메서드를 가질 수 있으며, 이는 하위 클래스에서 오버라이딩할 필요가 없습니다.
abstract class A{
private int x;
public void setX(int x) {
this.x = x;
}
public int getX() {
return x;
}
}
//자식 클래스
class B extends A {
int b = 200;
}
public class AbstractMain01 {
public static void main(String[] args) {
//A ap = new A(); //추상클래스는 부모클래스의 역할은 수행 가능하지만 직접 객체 생성은 불가능하다.
//<7번 라인의 abstract을 사용함으로써 안됨.>
B bp = new B();
bp.setX(100);
System.out.println(bp.getX());
System.out.println(bp.b);
}
}
100
200
package kr.s22.object.abs;
//추상 클래스 -> 사용하는 이유: 강요하기 위해서 일반 메서드는 강요하는 것이 없다. 자식 메서드마다 구현할 것들이 다 다르기 때문에 꼭 해야될 것들만 추상 메서드 상태로 두는것
abstract class A2{
private int x;
public void sexX(int x) {
this.x = x;
}
public int gexX() {
return x;
}
//추상 메서드 -> 구현이 없는 메서드 {중괄호가 없음.}
public abstract void make();
}
//자식 클래스
class B2 extends A2 { //B2에 빨간밑줄이 있다면 추상 메서드가 완벽히 구현이 되지않았다는 뜻. 추상메서드는 완벽히 구현되지 않으면 메모리에 올라가지 않기 때문이다.
//부모 클래스의 추상 메서드를 구현 ->을 하면 B2의 빨간밑줄이 없어진다.
@Override //재정의 한 것은 아니지만 재정의 방법을 사용한다.
public void make() { //abstract빼고 그대로 쓰면됨.
System.out.println("make");
}
}
public class AbstractMain02 {
public static void main(String[] args) {
B2 bp =new B2();
bp.make();
}
}
make
package kr.s22.object.abs;
abstract class Animal {
public void breathe() {
System.out.println("숨을 쉬다");
}
//추상메서드
public abstract void sound();
}
//자식클래스
class Dog extends Animal {
//Animal의 추상메서드 sound 구현
@Override
public void sound() {
System.out.println("개는 멍멍멍~~");
}
}
class Cat extends Animal {
//Animal의 추상 메서드 sound 구현
@Override
public void sound() {
System.out.println("고양이는 야옹야옹~~");
}
}
public class AbstractMain03 {
public static void main(String[] args) {
Dog d = new Dog();
d.breathe();
d.sound();
System.out.println("-----------");
Cat c = new Cat();
c.breathe();
c.sound();
}
}
숨을 쉬다
개는 멍멍멍~~
-----------
숨을 쉬다
고양이는 야옹야옹~~
package kr.s22.object.abs;
//추상 클래스
abstract class AbsEx{
int a = 100; //변수
public int getA() {//일반 메서드
return a;
}
//추상 메서드
abstract public int getB();
public abstract int getC();
}
//추상 클래스
abstract class AbsEx2 extends AbsEx{//AbsEx가 빨간 밑줄이 생긴다.
//추상클래스를 추상클래스에 상속하면 추상메서드 구현의 의무가 없음
String msg = "신세계";
//추상 메서드
public abstract String getMsg();
//부코를래스의 추상메서드 구현
@Override
public int getB() {
return 200;
}
}
public class AbstractMain04 extends AbsEx2{
//부모클래스의 추상메서드를 구현
@Override
public int getC() {
return 300;
}
@Override
public String getMsg() {
return msg;
}
public static void main(String[] args) {
AbstractMain04 am = new AbstractMain04();
System.out.println(am.getA());
System.out.println(am.getB());
System.out.println(am.getC());
System.out.println(am.getMsg());
}
}
100
200
300
신세계
'쌍용교육(JAVA) > JAVA' 카테고리의 다른 글
쌍용교육 -JAVA 수업 12일차 enum (0) | 2024.04.11 |
---|---|
쌍용교육 -JAVA 수업 12일차 Interface인터페이스 (0) | 2024.04.11 |
쌍용교육 -JAVA 수업 11일차 StringTokenizer (0) | 2024.04.11 |
쌍용교육 -JAVA 수업 11일차 Calendar,Date (0) | 2024.04.11 |
쌍용교육 -JAVA 수업 11일차 Wrapper(boxing) (0) | 2024.04.11 |