标签: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