面向对象继承

来源:互联网 发布: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();// 多线程里面是不安全的}}




原创粉丝点击