标签:nal 防止 内存区域 作用域 详细 模板 sch article 面向对象
目录介绍多态的实现方式有哪些?
第一种实现方式:基于继承实现的多态
基于继承的实现机制主要表现在父类和继承该父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写可以表现出不同的行为。多态的表现就是不同的对象可以执行相同的行为,但是他们都需要通过自己的实现方式来执行,这就要得益于向上转型了。
public class MainJava {
public static void main(String[] args) {
    //定义父类数组
    Wine[] wines = new Wine[2];
    //定义两个子类
    Test1 test1 = new Test1();
    Test2 test2 = new Test2();
    Wine win e = new Wine();
    //父类引用子类对象
    wines[0] = test1;
    wines[1] = test2;
    for(int i = 0 ; i < 2 ; i++){
        System.out.println(wines[i].toString() + "--" + wines[i].drink());
    }
    System.out.println("-------------------------------");
    System.out.println(test1.toString() + "--" + test1.drink());
    System.out.println(test2.toString() + "--" + test2.drink());
}
public static class Wine {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String drink(){
        return "喝的是 " + getName();
    }
    public String toString(){
        return null;
    }
}
public static class Test1 extends Wine{
    public Test1(){
        setName("Test1");
    }
    public String drink(){
        return "喝的是 " + getName();
    }
    public String toString(){
        return "Wine : " + getName();
    }
}
public static class Test2 extends Wine{
    public Test2(){
        setName("Test2");
    }
    public String drink(){
        return "喝的是 " + getName();
    }
    public String toString(){
        return "Wine : " + getName();
    }
}
}抽象类和普通类有何区别
抽象类和普通类最大的区别是,抽象类不能被实例化,需要继承抽象类才能实例化其子类。
public abstract class AbstractClassExample {
protected int x;
private int y;
public abstract void func1();
public void func2() {
    System.out.println("func2");
}
}public class AbstractExtendClassExample extends AbstractClassExample {br/>@Override
public void func1() {
System.out.println("func1");
}
}

标签:nal 防止 内存区域 作用域 详细 模板 sch article 面向对象
原文地址:http://blog.51cto.com/11359966/2334609