Java 面向对象 之 抽象类 abstract
http://www.verejava.com/?id=16992804621647
/**
知识点: 抽象类 abstract
题目: 爸爸叫我买一斤水果和一条鱼
思路:
1. 抽象出类:爸爸(Father), 儿子(Son), 水果(Fruit),鱼(Fish)
2. 找出类关系: 儿子继承爸爸 水果买回来属于->Father->Son
3. 找出方法: 买(buy) 是爸爸叫儿子买水果,爸爸知识发出了要求声明并没用实现
而真正去实现这个是儿子
*/
/**
注意:
1. 加了关键字 abstract 的抽象方法不能有方法体实现,只能有方法的声明
2. 当一个类中存在以 abstract 声明的抽象方法时, 该类必须加上abstract 关键
字表明该类是抽象类
3. 子类如果继承一个抽象类, 子类必须实现父类所有的抽象方法
4. 抽象类中也可以声明实现方法,也就是抽象类中可以定义抽象方法,也可以定义
带方法体的实现方法,而子类不需要复写抽象父类的具体已经实现的方法
5. 抽象类不能直接实例化,必须有其实现的子类间接来实例化
*/
public class TestAbstract {
public static void main(String[] args) {
//实例化父亲
//Father f=new Father();
//实例化儿子
Son s = new Son("李明");
//地摊上有各种水果和鱼
Fruit apple = new Fruit("苹果");
Fruit grape = new Fruit("葡萄");
Fish caoyu = new Fish("草鱼");
Fish lianyu = new Fish("鲢鱼");
//买水果和鱼
s.buy(apple);
s.buy(lianyu);
//回家以后高兴的告诉爸爸
System.out.println("爸爸,爸爸 我买了一斤:" + s.getFruit().getName() + " 和一条 : " + s.getFish().getName());
}
}
abstract class Father {
protected Fruit fruit;
protected Fish fish;
public Fruit getFruit() {
return this.fruit;
}
public Fish getFish() {
return this.fish;
}
//要求声明要买水果
public abstract void buy(Fruit fruit);
//要求声明要买条鱼
public abstract void buy(Fish fish);
}
class Son extends Father {
private String name;
public Son(String name) {
super();
this.name = name;
}
//儿子实现父亲买水果的要求
public void buy(Fruit fruit) {
this.fruit = fruit;
}
//儿子实现父亲买条鱼的要求
public void buy(Fish fish) {
this.fish = fish;
}
public String getName() {
return this.name;
}
}
class Fruit {
private String name;
public Fruit(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
class Fish {
private String name;
public Fish(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Java 编程
1.循环体中包含循环语句的结构称为多重循环。三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环。在二重循环中,外层循环每执行一次,内层循环要执行一圈。 判断一个大于0且小于9位数的数字是几位数字。 public class HelloWorld{ public static void main(String[] args){ int num = 999; int count = 0; if (num >= 0 && num<=999999999){ while(num != 0){ count++; num/=10; } System.out.println("它是个"+ count+"位的数!"); } else{ System.out.println("输入有误!"); } 2. 小伙伴们,请根据所学知识,编写一个 JAVA 程序,实现输出考试成绩的前三名 要求: 1、 考试成绩已保存在数组 scores 中,数组元素依次为 89 , -23 , 64 , 91 , 119 , 52 , 73 2、 要求通过自定义方法来实现成绩排名并输出操...
-
下一篇
C# 应用Excel条件格式(一)
Excel中的条件格式功能是个十分强大且方便的功能,通过对使用条件格式功能可以在很大程度上改进表格的设计和可读性,用户可以指定单个或者多个单元格区域应用一种或者多种格式,如此一来,也在大大提高了表格的可操作性。下面将介绍在C#编程中如何来设置并应用Excel条件格式。 示例要点概述: 1. 基于单元格值应用条件格式 2. 基于自定义公式应用条件格式 3. 应用数据条条件类型格式 4. 删除条件格式 4.1 删除指定数据范围中的条件格式 4.2 删除全部条件格式 使用工具 Free Spire.XLS for .NET 8.3(免费版) Visual Studio 示例代码(供参考) 测试文档如下: 【示例 1 】应用条件格式 using Spire.Xls; using System.Drawing; namespace ConditionalFormatting_XLS { class Program { static void Main(string[] args) { //实例化workbook对象并加载文档 Workbook wb = new Workbook(); wb...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Dcoker安装(在线仓库),最新的服务器搭配容器使用