반응형
1. 오버로딩과 다형성
서로 다른 동작 방법을 가지고 있기 때문에 오버로딩은 다형성의 한 예라고 할 수 있다.
package 다형성;
class a{
public void a(int param) {
System.out.println("숫자출력");
System.out.println(param);
}
public void a(String param) {
System.out.println("문자 출력");
System.out.println(param);
}
}
public class overloading_polymorphism {
public static void main(String[] args) {
a a = new a();
a.a(3);
a.a("삼");
}
}
2. 클래스와 다형성
package polymorphism;
class ClassA{
public String x() {return "ClassA.x";}
}
class ClassB extends ClassA{
public String x() {return "ClassB.x";}
public String y() {return "ClassB.y";}
}
public class class_ploymorphism {
public static void main(String[] args) {
ClassA obj = new ClassB();
System.out.println(obj.x());
// System.out.println(obj.y());
}
}
package org.opentutorials.javatutorials.polymorphism;
abstract class Calculator{
int left, right;
public void setOprands(int left, int right){
this.left = left;
this.right = right;
}
int _sum() {
return this.left + this.right;
}
public abstract void sum();
public abstract void avg();
public void run(){
sum();
avg();
}
}
class CalculatorDecoPlus extends Calculator {
public void sum(){
System.out.println("+ sum :"+_sum());
}
public void avg(){
System.out.println("+ avg :"+(this.left+this.right)/2);
}
}
class CalculatorDecoMinus extends Calculator {
public void sum(){
System.out.println("- sum :"+_sum());
}
public void avg(){
System.out.println("- avg :"+(this.left+this.right)/2);
}
}
public class CalculatorDemo {
public static void execute(Calculator cal){
System.out.println("실행결과");
cal.run();
}
public static void main(String[] args) {
Calculator c1 = new CalculatorDecoPlus();
c1.setOprands(10, 20);
Calculator c2 = new CalculatorDecoMinus();
c2.setOprands(10, 20);
execute(c1);
execute(c2);
}
}
3. 인터페이스와 다형성
package org.opentutorials.javatutorials.polymorphism;
interface father{}
interface mother{}
interface programmer{
public void coding();
}
interface believer{}
class Steve implements father, programmer, believer{
public void coding(){
System.out.println("fast");
}
}
class Rachel implements mother, programmer{
public void coding(){
System.out.println("elegance");
}
}
public class Workspace{
public static void main(String[] args){
programmer employee1 = new Steve();
programmer employee2 = new Rachel();
employee1.coding();
employee2.coding();
}
}
참조: 생활코딩 다형성
반응형
'2020 > 신입 개발자 면접 질문 모음' 카테고리의 다른 글
신입 개발자 면접질문 # inner class(내부 클래스) (0) | 2020.03.27 |
---|---|
신입개발자 면접 질문 # 클래스 변수, 인스턴스 변수, 지역변수 (0) | 2020.03.26 |
개발자 면접질문 # 트랜잭션이란 (0) | 2020.03.25 |
오버라이딩(Overriding) vs 오버로딩(Overloading) (0) | 2020.03.23 |
신입 개발자 면접 질문 #Servelt & JSP의 4가지 Scope (0) | 2020.03.20 |