标签:st3 类的继承 没有 sys 产生 return round int rectangle
实现多态的三个条件: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();
}
}
标签:st3 类的继承 没有 sys 产生 return round int rectangle
原文地址:http://www.cnblogs.com/silenTJ/p/7786668.html