Java 面向对象 之 多态实例2
http://www.verejava.com/?id=16992846385655
/**
题目: 孩子吃 水果(苹果,葡萄,芒果,菠萝)
思路:
1. 抽象出类 : 孩子(Baby), 水果(Fruit)(苹果(Apple),葡萄(Grape),芒果(Mango))
2. 找出类的关系: 水果 -> 孩子 (苹果,葡萄,芒果) 是 水果的分类
3. 找出属性: 孩子(姓名,水果引用)
4. 找出方法: 孩子吃(eat)水果
子类->父类的转换 作用 :解耦 也就是降低类与类之间的耦合度 提供可扩展性
*/
public class Polymorphism3 {
public static void main(String[] args) {
//实例化一个Baby
Baby baby = new Baby("李明");
//实例化一个苹果 和 一个葡萄
Apple apple = new Apple("红富士");
Grape grape = new Grape("黑葡萄");
Mango mango = new Mango("大芒果");
PineApple pineApple = new PineApple("菠萝");
//李明吃苹果
baby.eat(apple);
System.out.println(baby.getName() + " 吃了 " + baby.getFruit().getName());
baby.eat(grape);
System.out.println(baby.getName() + " 吃了 " + baby.getFruit().getName());
baby.eat(mango);
System.out.println(baby.getName() + " 吃了 " + baby.getFruit().getName());
baby.eat(pineApple);
System.out.println(baby.getName() + " 吃了 " + baby.getFruit().getName());
}
}
class Baby {
private Fruit fruit;
private String name;
public Baby(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public Fruit getFruit() {
return this.fruit;
}
//吃水果
public void eat(Fruit fruit) {
this.fruit = fruit;
}
}
class Fruit {
private String name;
public Fruit(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
class PineApple extends Fruit {
public PineApple(String name) {
super(name);
}
}
class Apple extends Fruit {
public Apple(String name) {
super(name);
}
}
class Grape extends Fruit {
public Grape(String name) {
super(name);
}
}
class Mango extends Fruit {
public Mango(String name) {
super(name);
}
}

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Java 面向对象 之 多态实例 孩子吃水果
http://www.verejava.com/?id=16992843565554 /** 题目: 孩子吃(苹果,葡萄,芒果) 思路: 1. 抽象出类 : 孩子(Baby), 苹果(Apple),葡萄(Grape) 2. 找出类的关系: 苹果,葡萄 -> 孩子 3. 找出属性: 孩子(姓名,苹果引用,葡萄引用) 苹果(名称) 葡萄(名称) 4. 找出方法: 孩子吃(eat)苹果或者葡萄 */ public class Polymorphism2 { public static void main(String[] args) { //实例化一个Baby Baby baby = new Baby("李明"); //实例化一个苹果 和 一个葡萄 Apple apple = new Apple("红富士"); Grape grape = new Grape("黑葡萄"); Mango mango = new Mango("大芒果"); //李明吃苹果和葡萄 baby.eat(apple); System.out.println(baby.getName() + " 高兴的说我吃了 "...
-
下一篇
网站漏洞之apache环境S2-057漏洞 利用POC 远程执行命令漏洞复现
S2-057漏洞,于2018年8月22日被曝出,该Struts2 057漏洞存在远程执行系统的命令,尤其使用linux系统,apache环境,影响范围较大,危害性较高,如果被攻击者利用直接提权到服务器管理员权限,网站数据被篡改,数据库被盗取都会发生。 目前我们SINE安全对该S2-057漏洞的测试,发现受影响的版本是Apache Struts 2.3–ApacheStruts2.3.34、Apache Struts2.5–Apache Struts2.5.16等系列版本。官方Apache已经紧急的对该S2-057漏洞进行了修复。 通过国外曝出来的漏洞poc,我们来介绍下Struts2漏洞该如何的利用: S2-057漏洞产生于网站配置xml的时候,有一个namespace的值,该值并没有做详细的安全过滤导致可以写入到XML上,尤其url标签值也没有做通配符的过滤,导致可以执行远程代码,以及系统命令到服务器系统中去。 我们首先来搭建下struts2的环境,找一台windows服务器,使用一键部署工具部署好测试环境,vulhub环境也搭建好如下图: 接下来就是Struts2漏洞的利用与复现过...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- MySQL数据库在高并发下的优化方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果