面向对象继承
来源:互联网 发布:ibatis sql注入 编辑:程序博客网 时间:2024/05/21 02:33
概念
继承是为了实现:代码重用
extends 关键字: 子类 extends 父类
子类继承父类,子类拥有父类的非私有的属性和方法。
java 只允许单继承,(一个孩子只能有一个爹,但一个爹可以有多个孩子),在interface 中可以多继承。
子类不能继承父类的构造方法;
子类在使用自己的构造方法的时候,会先去调用祖先的构造方法,依次到本类为止。
题:
创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。
设定
1) 出租车类:
属性包括:车型,车牌,所属出租公司;方法包括:启动,停止
2) 家用轿车类:
属性包括:车型,车牌,车主姓名;方法包括:启动,停止
要求
1) 分析出租车和家用轿车的公共成员,提取出父类—汽车类
2) 利用继承机制,实现出租车类和家用轿车类
3) 编写测试类,分别测试汽车类,出租车类和家用轿车类对象的相关方法
4) 定义名为car的包存放汽车类,出租车类,家用轿车类和测试类
package com.zy;/** * 圆类 * * @author Administrator * */public class Circles {private double radius;public Circles() {}public Circles(double radius) {this.radius = radius;}double getArea() {return Math.PI * radius * radius;}double getPerimeter() {return Math.PI * 2 * radius;}void show() {System.out.println("圆的半径是:"+radius);System.out.println("圆的面积是:"+getArea());System.out.println("圆的周长是:"+getPerimeter());}}
package com.zy;/** * 圆柱体类 * * @author Administrator * */public class Cylinder extends Circles {private double height;public Cylinder(double height, double radius) {// 子类通过super调用父类的构造方法,通过构造方法进行为父类属性进行赋值super(radius);this.height = height;}double getVolume() {return super.getArea()*height;}void showVolume() {System.out.println("圆柱的体积是:"+getVolume());}public static void main(String[] args) {Cylinder cy = new Cylinder(2, 10);cy.show();cy.showVolume();}}
1. 某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精
设定
1) 蛇怪类:
属性包括:怪物名字,生命值,攻击力
方法包括:攻击,移动(曲线移动),补血(当生命值<10时,可以补加20生命值)
2) 蜈蚣精类:
属性包括:怪物名字,生命值,攻击力
方法包括:攻击,移动(飞行移动)
要求
1) 分析蛇怪和蜈蚣精的公共成员,提取出父类—怪物类
2) 利用继承机制,实现蛇怪类和蜈蚣精类
3) 攻击方法,描述攻击状态。内容包括怪物名字,生命值,攻击力
4) 编写测试类,分别测试蛇怪和蜈蚣精的对象及相关方法
5) 定义名为mon的包存怪物类,蛇怪类,蜈蚣精类和测试类
package com.mon;/** * 怪物类 * * @author Administrator * */public class Mon {private String name;private int hp;private int power;public void attack(){System.out.println(name+":"+hp+":"+power);}public void move(){System.out.println("移动");}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getHp() {return hp;}public void setHp(int hp) {this.hp = hp;}public int getPower() {return power;}public void setPower(int power) {this.power = power;}}
package com.mon;/** * 蛇怪类 * @author Administrator * */public class Snake extends Mon{public void move(){System.out.println("S型移动");}public void addHp(){if(getHp()<10){setHp(getHp()+20);System.out.println(getHp());}}}
package com.mon;/** * 蜈蚣类 * @author Administrator * */public class Centipede extends Mon{public void move(){System.out.println("飞型移动");}}
package com.mon;import java.util.LinkedList;import java.util.List;import java.util.ArrayList;import java.util.Vector;import com.zy.Cylinder;public class Test {public static void main(String[] args) {Mon c = new Snake();c.attack();c.move();List li = new LinkedList();// 多线程里面是不安全的}}
- 面向对象继承
- 面向对象编程,继承
- 面向对象之继承
- JavaScript面向对象------继承
- 面向对象之继承
- 面向对象之继承
- JavaScript面向对象---继承
- 面向对象之继承
- 面向对象编程:继承
- 面向对象之继承
- javaScript 面向对象-继承
- 面向对象之继承
- javaSE-面向对象-继承
- js 面向对象 继承
- 面向对象之继承
- 面向对象--继承
- JavaScript面向对象------继承
- JS面向对象-继承
- CodeForces
- BI服务器配置与客户端情况
- js 获取浏览器版本信息
- 使用spring session redis做session共享
- C语言实现一个长字符串中去除多次出现短字符串的功能
- 面向对象继承
- OC语言学习22-Block基本语法
- leetcode 337. House Robber III
- 【spring ----- 注解篇】 常用注解
- 百度云bae发布代码失败怎么处理
- Dictionary<string, List<string>> 的使用
- select、 poll 、epoll 区别与联系
- 关于winodows下编程c++遇到的引用文件路径问题
- springMVC中 @RequestParam和@RequestBody的区别