• 定义抽象类Shape,抽象方法为showArea(),求出面积并显示,定义矩形类Rectangle,正方形类Square,圆类 Circle,根据各自的属性,用showArea方法求出各自的面积,在main方法中构造3个对象,调用showArea方法。(体现多态)


    实现多态的三个条件:1.要有继承2.要有抽象方法重写3.用父类指针(引用)指向子类对象

    重载重写重定义的区别:

    1.重载:在同一个类中进行;  编译时根据参数类型和个数决定方法调用;  子类无法重载父类;

      父类同名方法被子类该方法覆盖.

    2.重写:在父类和子类之间进行;  父类与子类方法有完全相同类型;

      在运行时根据具体对象类型决定方法调用;

    3.在重写中有抽象方法的会产生多态;没有使用抽象方法叫重定义

    以下具体代码具体分析:

    package test3;
    abstract class Shape{      //抽象类(一定有抽象方法,但不一定都是抽象方法)
    protected double area;
    abstract void showArea();    //抽象方法
    }
    class Rectangle extends Shape{ //类的继承
    private double x,y;
    Rectangle(){}
    Rectangle(double x,double y){  //有参构造方法初始化
    this.x=x;
    this.y=y;
    }
    public double getX(){
    return x;
    }
    public double getY(){
    return y;
    }
    public void showArea(){      //计算面积并显示.showArea方法的重写
    area=getX()*getY();
    System.out.println(area);
    }
    }
    class Square extends Shape{    //同上
    private double x;
    Square(){}
    Square(double x){
    this.x=x;
    }
    public double getX(){
    return x;
    }
    public void showArea(){
    area=getX()*getX();
    System.out.println(area);
    }
    }
    class Circle extends Shape{    //同上
    private double r;
    Circle(){}
    Circle(double r){
    this.r=r;
    }
    public double getR(){
    return r;
    }
    public void showArea(){
    area=3.14*getR()*getR();
    System.out.println(area);
    }
    }
    public class Test3_2 {
    public static void main(String args[]){
    Shape re=new Rectangle(2,3);    //多态产生的第3个条件.父类的引用指向子类的对象
    fun(re);              //抽象方法重写产生多态,运行时根据具体对象类型决定方法调用
    Shape sq=new Square(2);
    fun(sq);
    Shape ci=new Circle(2);
    fun(ci);
    }
    public static void fun(Shape p){    
    p.showArea();
    }
    }

  • 相关阅读:
    将 Web 项目从 Visual Studio .Net 2002/2003 转换到 Visual Studio 2005 的分步指南
    用 ASP.NET 2.0 改进的 ViewState 加快网站速度
    SQL行列转换实战
    分页存储过程
    分布式系统设计套件
    ASP.NET 2.0 本地化功能:本地化 Web 应用程序的新方法
    在 ASP.NET 页面中使用 TreeView 控件
    SQL Server中的几个方法和Transact SQL 常用语句以及函数[个人推荐]
    ASP.NET 常见问题 和 网页上加上百度搜索
    两台SQL Server数据同步解决方案
  • 原文地址:https://www.cnblogs.com/silenTJ/p/7786668.html
Copyright © 2020-2023  润新知