文档章节

面向抽象编程

YYQ_ZJL
 YYQ_ZJL
发布于 2016/07/03 10:34
字数 241
阅读 4
收藏 0

abstract类中的abstract方法只允许声明,比允许实现,要实现抽象方法必须将abstract类的对象转变为abstract类的子类的上转型对象。

实例分析:

Geometry抽象类:
package zjl.java;
public abstract class Geometry {
    public String name;
    public abstract double getArea();
}
Circle子类:
package zjl.java;

public class Circle extends Geometry{
    double r;
    Circle(double r,String s){
        this.r = r;
        this.name = s;
    }
    public double getArea(){
        return 3.14*r*r;
    }
}
Rectanger子类:
package zjl.java;

public class Rectanger extends Geometry{
    double a,b;
    public Rectanger(double a,double b,String s) {
        this.a = a;
        this.b = b;
        this.name = s;
    }
    public double getArea(){
        return a*b;
    }
}
Pillar类:
package zjl.java;
public class Pillar {
    Geometry bottom;
    double height;
    Pillar(Geometry botton,double height){
        this.bottom = botton;
        this.height = height;
    }
    public double getVolume(){
        return bottom.getArea()*height;
    }
}

主类:

package zjl.java;

public class TestAbstractProgram {

    public static void main(String[] args) {
        Pillar pillar;
        Circle circle = new Circle(2.3,"circle");
        Rectanger rectanger = new Rectanger(1.2, 2.9,"rectanger");
        Geometry bottom;
        //botton = new Geometry();       //abstract 类不能用new 创建对象
        bottom = circle;
        pillar = new Pillar(bottom, 10);
        System.out.println(bottom.name + "'s volume is "+ pillar.getVolume());
        bottom = rectanger;
        pillar = new Pillar(bottom, 10);
        System.out.println(bottom.name + "'s volume is "+pillar.getVolume());
    }

}

运行结果:

circle's volume is 166.106
rectanger's volume is 34.8

本文转载自:http://www.cnblogs.com/zhangjialu2015/p/5358695.html

YYQ_ZJL
粉丝 0
博文 30
码字总数 206
作品 0
杭州
其他
私信 提问
Java学习之面向对象与面向过程的比较

前言 Java编程语言是一门面向对象的语言,这与之前的编程语言来说,是一个重大的进步和发展,下面主要来分析一下面向对象和面向过程两者之间的关系。 编程语言的发展 如下图,编程语言的发展...

m18633778874
2018/04/10
0
0
开始学习函数式编程后对编程的一些新感受

我们绝大多数程序员都是用命令式编程,因为学校教的编程就是命令式的,什么C、Java等等(当然他们也可以用函数式编程)。函数式编程和命令式编程不是一个相对应层次的概念。理论上,函数式编...

无牙子
2014/03/31
357
1
spring 中IOC和aop的理解

什么是DI机制? 依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色 需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用...

YoungBoyG
2016/04/05
234
0
面向对象和面向过程的编程方式的理解

面向对象和面向过程的区别? 如果说面向对象和面向过程的具体区别,最深入的地方应该是去看设计模式,推荐大话设计模式那本书,讲的比较好。本人只不过简单叙述下,重点是如何进行面向对象和...

qingliangdexiar
2017/07/31
0
0
解释一下,函数式方程,要不你进来看下?

函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序...

胶水语言
2018/05/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

thinkphp5.1学习过程四——trait

<?php /** *trait实现了代码的复用 *并且突破了单继承的限制 *trait是类不是类,不能实例化 */ trait Demo1 { public function hello1() { return __METHOD__; } } trait Demo2 { public fu......

大海yht
26分钟前
6
0
DB2 sequence 操作

操作DB2 下 sequence seqName db2数据库一般seq还是比较大的,但是程序在调用的时候还是不可避免的有一些bug, 下面是对于seq一些简单的操作,也作为工作的一些记录 1、命令行取sequence se...

飞雪无痕
34分钟前
6
0
《吊打面试官》系列-秒杀系统设计

你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图和个人联系方式,欢迎Star和指教 絮叨 之前写了很多Redis相关的知识...

敖丙
39分钟前
12
0
Qt编写气体安全管理系统11-数据打印

一、前言 在各种软件系统中,数据打印也是常用的功能之一,一般来说会对查询的数据结果导出到excel,还会对查询的数据结果直接打印,在Qt中提供了打印机类QPrinter,在printsupport组件中,可...

飞扬青云
46分钟前
5
0
初级阶段

#include <stdio.h> #include <stdlib.h> int main(){ int a; int Sn = 0; int i; int tmp = 0; scanf_s("%d", &a); for (i = 1; i <= 5; i++) { tmp = tmp * 10 + a; Sn += tmp; } printf("......

Lxxxxx256
46分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部