笔记14 多态

package test0909;
/*
 *   1、什么是多态?
 *    1) 生活角度:  龙生九子,各有不同; 
 *    2) 专业角度: 一个类中的属性和方法在子类中通过各自不同的实现,可以具有不同的数据类型或者不同的行为 
 * 
 *   2、多态在java中的形式:
 *    父类的对象变量引用子类的对象。
 *    例如:  Person p1 = new Student()
 */
public class ShapeTest{
	public static void main(String[] args) {
		Shape [] a = new Shape [5];
		
		for (int i = 0; i < a.length ; i++){
			a[i] = type() ;
		}
		//求各个图形的面积,和总面积
		double total = 0;
		for(int i = 0; i < a.length; i++){
			System.out.println(a[i].toString());
			total += a[i].area();
		}
		System.out.println("总面积为:"+ total);
	}
	public static Shape type(){
		int n = (int)(3 * Math.random());
		if(n == 0){
			return new Circle("圆形", (int)(10 * Math.random()) );
		}else if(n == 1){
			return new Rectangle("矩形", (int)(10 * Math.random()), (int)(10 * Math.random()) );
		}else{
			return new Triangular("" , (int)(10 * Math.random()), (int)(10 * Math.random()) );
		}
	}
}

class Shape {
	private String type;
	
	public Shape() {
	
	}
	public Shape(String type){
		this.type = type;
	}
	
	public void setType(String type) {
		this.type = type;
	}
	public String getType() {
		return type;
	}
	
	//功能方法,求图形的面积;
	 public double area(){
		 return 0;
	 }
	 public String toString(){
		 return "平面图形的种类:" + type ;
	 }
}
class Circle extends Shape{
	private int r;
	
	public Circle() {	
	}
	public Circle(String type, int r){
		super( type );
		this.r = r;
	}
	
	public void setR(int r) {
		this.r = r;
	}
	public int getR() {
		return r;
	}
	
	//重写area方法,求面积;
	public double area(){
		return Math.PI * r * r ;
	}
	@Override
	public String toString() {
		return super.toString() + " 圆的半径为:" + r + " 面积为:" + area() ;
	}
}

class Rectangle extends Shape {
	private int w;
	private int h;
	public Rectangle() {
	}
	public Rectangle(String type, int w, int h){
		super( type );
		this.w = w;
		this.h = h;		
	}
	public int getW() {
		return w;
	}
	public void setW(int w) {
		this.w = w;
	}
	public int getH() {
		return h;
	}
	public void setH(int h) {
		this.h = h;
	}
	// 改写功能方法,计算矩形的面积;
	public double area() {
		return w * h ;
	}
	public String toString(){
		return super.toString() + " 矩形的宽为:" + w + " 矩形的高:" + h + " 矩形的面积为:" + area() ;
	}
}

class Triangular extends Shape{
	private int a;
	private int h;
	public Triangular() {
	}
	public Triangular(String type, int a, int h){
		super( type );
		this.a = a;
		this.h = h;
	}
	public int getA() {
		return a;
	}
	public void setA(int a) {
		this.a = a;
	}
	public int getH() {
		return h;
	}
	public void setH(int h) {
		this.h = h;
	}
	//编写功能方法,求矩形的面积;
	@Override
	public double area() {
		return a * h / 2.0 ;
	}
	public String toString(){
		return super.toString() + " 三角形的底边长:" + a + " 高为:" + h + " 面积是:" + area() ;
	}
}

基于html+python+Apriori 算法、SVD(奇异值分解)的电影推荐算法+源码+项目文档+算法解析+数据集,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 电影推荐算法:Apriori 算法、SVD(奇异值分解)推荐算法 电影、用户可视化 电影、用户管理 数据统计 SVD 推荐 根据电影打分进行推荐 使用 svd 模型计算用户对未评分的电影打分,返回前 n 个打分最高的电影作为推荐结果 n = 30 for now 使用相似电影进行推荐 根据用户最喜欢的前 K 部电影,分别计算这 K 部电影的相似电影 n 部,返回 K*n 部电影进行推荐 K = 10 and n = 5 for now 根据相似用户进行推荐 获取相似用户 K 个,分别取这 K 个用户的最喜爱电影 n 部,返回 K*n 部电影进行推荐 K = 10 and n = 5 for now Redis 使用 Redis 做页面访问次数统计 缓存相似电影 在使用相似电影推荐的方式时,每次请求大概需要 6.6s(需要遍历计算与所有电影的相似度)。 将相似电影存储至 redis 中(仅存储 movie_id,拿到 movie_id 后还是从 mysql 中获取电影详细信息), 时间缩短至:93ms。 十部电影,每部存 top 5 similar movie 登录了 1-6 user并使用了推荐系统,redis 中新增了 50 部电影的 similar movie,也就是说,系统只为 6 为用户计算了共 60 部电影的相似度,其中就有10 部重复电影。 热点电影重复度还是比较高的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值