java中类之间的关系之封装、继承与多态的几个例子
例子1
1、编写一个Java应用程序,该程序包括3个类:Monkey类、People类和测试类。要求:
(1)Monkey类中有个public void speak()方法,在speak方法中输出“咿咿呀呀。。。。。。”的信息。
(2)People类是Monkey类的子类,在People类中重写方法speak,在speak方法中输出“小样的,不错嘛,会说话了!”的信息。
(3)在People类中新增方法void think(),在think方法中输出“别说话,认真思考!”的信息。
/**
* Monkey 父类
*/
package cn.yjlblog.www;
public class Monkey
{
public void speak()
{
System.out.println("咿咿呀呀。。。。。。");
}
}
/**
* People 子类
*/
package cn.yjlblog.www;
public class People extends Monkey
{
public void speak()
{
System.out.println("小样的,不错嘛,会说话了!");// TODO Auto-generated method stub
}
void think()
{
System.out.println("别说话,认真思考!");
}
}
/**
* TestClass 测试类
*/
package cn.yjlblog.www;
public class TestClass {
public static void main(String[] args) {
Monkey m = new Monkey();
m.speak();
Monkey p = new People();
p.speak();
//Monkey p1 = new People();//The method think() is undefined for the type Monkey
People p1 = new People();
p1.think();
}
}
例子2
2、按要求编写一个Java应用程序:
(1)定义一个类(Rectangle),描述一个矩形,包含有长、宽两种属性和计算面积的方法。
(2)定义一个类(Cuboid),继承自矩形类,同时该类描述长方体,具有长、宽、高属性和计算体积的方法。
(3)编写一个测试类,对以上两个类进行测试,创建一个长方体,定义其长、宽、高,输出其底面积和体积。
/**
* Rctangle 父类
*/
package cn.yjlblog.www;
public class Rectangle
{
private double length;
private double width;
//生成set 和get 方法
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
//构造含有参数的方法
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
//求面积
public double Aera()
{
return length * width;
}
}
/**
* Cuboid 子类
*/
package cn.yjlblog.www;
public class Cuboid extends Rectangle
{
private double height;
private double volume;
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getVolume() {
return volume;
}
public void setVolume(double volume) {
this.volume = volume;
}
public Cuboid(double length, double width, double height) {
super(length, width);
this.height = height;
}
}
/**
* TestClass 测试类
*/
package cn.yjlblog.www;
public class TestClass {
public static void main(String[] args) {
Cuboid rct = new Cuboid(10,20,30);
double v = rct.Aera()*rct.getHeight();
double s = rct.Aera();
System.out.println("The Rctangle's volume is:"+v);
System.out.println("The Rctangle's floor space is:"+s);
}
}
运行结果
The Rctangle's volume is:6000.0
The Rctangle's floor space is:200.0
在这个例子中,我觉的并没有实现题目中的效果...enmmmm,以为题目中(2)中说,要求写出计算体积的方法,但是在Cuboid中不会写......于是把体积 的计算方法写在了测试类中....
例子3
3、按要求编写一个Java应用程序:
(1)编写一个Shape类,具有属性周长(perimeter)和面积(area);
(2)定义其子类三角形(Triangle)和矩形(Rectangle),分别具有求周长和面积的方法。
(3)定义测试类,在其main方法中创建三角形和矩形类的对象,并赋给Shape类的对象a和b,使用对象a、b来测试其特性。
/**
* Shape 父类
*/
package cn.yjlblog.www;
public class Shape {
private double perimeter;
private double area;
//get set 方法
public double getPerimeter() {
return perimeter;
}
public void setPerimeter(double perimeter) {
this.perimeter = perimeter;
}
public double getArea() {
return area;
}
public void setArea(double area) {
this.area = area;
}
//构造方法
public Shape(double perimeter, double area) {
this.perimeter = perimeter;
this.area = area;
}
}
/**
* Triangle 子类
*/
package cn.yjlblog.www;
public class Triangle extends Shape {
public Triangle(double perimeter, double area) {
super(perimeter, area);
// TODO Auto-generated constructor s
}
private double a1;
private double a2;
private double a3;
//set get 方法
public double getA1() {
return a1;
}
public void setA1(double a1) {
this.a1 = a1;
}
public double getA2() {
return a2;
}
public void setA2(double a2) {
this.a2 = a2;
}
public double getA3() {
return a3;
}
public void setA3(double a3) {
this.a3 = a3;
}
public double perimeter()
{
return a1+a2+a3;
}
public double area()
{
double s1=(a1+a2+a3)/2;
double s2 = s1*(s1-a1)*(s1-a2)*(s1-a3);
double result = Math.sqrt(s2);
return result;
}
}
package cn.yjlblog.www;
/**
* Rectangle 子类
*/
public class Rectangle extends Shape{
public Rectangle(double perimeter, double area) {
super(perimeter, area);
// TODO Auto-generated constructor stub
}
private double b1;
private double b2;
public double getB1() {
return b1;
}
public void setB1(double b1) {
this.b1 = b1;
}
public double getB2() {
return b2;
}
public void setB2(double b2) {
this.b2 = b2;
}
public double perimeter()
{
return (b1+b2)*2;
}
public double area()
{
return b1*b2;
}
}
/**
* TestClass 测试类
*/
package cn.yjlblog.www;
public class TestClass {
public static void main(String[] args) {
Triangle a = new Triangle(0, 0);
a.setA1(3);
a.setA2(4);
a.setA3(5);
System.out.println(a.perimeter());
System.out.println(a.area());
Rectangle b = new Rectangle(0, 0);
b.setB1(3);
b.setB2(4);
System.out.println(b.perimeter());
System.out.println(b.area());
}
}
运行结果
12.0 //三角形周长
6.0 //三角形面积
14.0 //长方形周长
12.0 //长方形面积
这个题目总感觉自己的父类没有用上...enmmm..可能自己的关于java的语法还是.....再想想。
java中类之间的关系之封装、继承与多态的几个例子的更多相关文章
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中, ...
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现(转)
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统 ...
- UML中类之间的关系
UML中类之间的关系分为以下几种:依赖.关联.泛化.聚合.组合. 依赖是指一个类使用了另一个类,它是一种使用关系,描述了一个事物的规格说明的变化可能会影响到使用它的另一个事物(反之不一定).最常见的依 ...
- 关于CPU核心,线程,进程,并发,并行,及java线程之间的关系
前言:作为一个转行java的小白,一直搞不清楚java中的多线程.于是来梳理一下关于CPU核心,线程,进程,并发,并行,及java线程之间的关系, 1.CPU角度来看: 我们以Intel的Core i ...
- 附:常见的Jdbc Type 与 Java Type之间的关系
附:常见的Jdbc Type 与 Java Type之间的关系 JDBC Type Java Type CHAR String VARCHAR String LONG ...
- day33 序列类型,绑定方法,类方法,静态方法,封装继承和多态
Python之路,Day20 = 序列类型,绑定方法,类方法,静态方法,封装继承和多态 序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要 ...
- java 学习笔记——类之间的关系之封装、继承与多态的详解
封装 一个封装的简单例子 封装就是把对象的属性(状态)和方法(行为)结合在一起,并尽可能隐蔽对象的内部细节,成为一个不可分割的独立单位(即对象),对外形成一个边界,只保留有限的对外接口使之与外部发生联 ...
- java封装继承以及多态(含代码)
封装 该露的露,该藏的藏 我们常需设计要追求,"高内聚,低耦合".高内聚就是类的内部数据操作细节自己完成.不允许外部干涉:低耦合:仅暴漏少量的方法给外部使用. 封装(数据的隐藏) ...
- 【转】UML图中类之间的关系
原文:http://blog.csdn.net/hguisu/article/details/7609483 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相 ...
随机推荐
- Python学习日志_2017/09/08
今天早晨学习了<Head First :HTML and CSS>:学习了两个章节,感觉从基础学习特别的踏实,能看懂的同时踏踏实实的锻炼了基础的能力.我个人认为无论哪个行业,最重要的永远是 ...
- Java笔记—— 格式化的输入和输出
精确输出 可以用8个字符的宽度和小数点后了两个字符的精度打印x. double x = 10000.0 /3.0; System.out.printf("%8.2f\n",x);/ ...
- UICollectionView中Cell左对齐 居中 右对齐 等间距------你想要的,这里都有
支持靠左,居中,靠右,等间距对齐. 靠左等间距.png 居中等间距.png 靠右等间距.png #import <UIKit/UIKit.h> typedef NS_ENUM(NSInte ...
- Bash 脚本进阶,经典用法及其案例
前言:在linux中,Bash脚本是很基础的知识,大家可能一听脚本感觉很高大上,像小编当初刚开始学一样,感觉会写脚本的都是大神.虽然复杂的脚本是很烧脑,但是,当我们熟练的掌握了其中的用法与技巧,再多加 ...
- 201521123110 《Java程序设计》第7周学习总结
1. 本章学习总结 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 public boolean contains(Object o) { re ...
- 201521123054 《Java程序设计》第7周学习总结
1. 本周学习总结 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 //contains()方法 public boolean contains(O ...
- 201521123121 《JAVA程序设计》第6周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
- 201521123075 《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. - 了解了多态就是以单一的接口操作多种类型的对象,但是对多态和继承的关系还是有点混乱. - ...
- Java课设 彩票购买抽奖程序 个人博客
一.团队课程设计博客链接 http://www.cnblogs.com/lyq063/p/7072507.html 二.自己的代码提交记录截图 三.自己负责模块或任务详细说明 用户注册信息的存储和登录 ...
- JAVA课程设计猜数游戏 个人
1.团队课程设计博客链接 https://i.cnblogs.com/EditPosts.aspx?postid=7067843&update=1 2.个人负责模块说明 输入用户ID 2.主要 ...