一个例子理解java面向对象的机制

   //定义Gun类
public abstract class Gun {
    protected String name;
    // 带参数的构造方法,特殊的方法,名字必须与类名相同
    public Gun() {
    public Gun(String name) {
        this.name = name;
    // 构造抽象方法,并在子类中继承和定义。
    abstract void sound();
    public String getName() {
        return name;
    public void setName(String name) {
        this.name = name;
    //Carbine继承自Gun
public class Carbine extends Gun {
    //带参数的构造方法,特殊的方法,名字必须与类名相同
    public Carbine(String name) {
        this.name = name;
    //Gun类下不同的子类拥有同名的sound()方法,但是内容不同,在调用sound()方法时会根据具体的Gun而自动调用相应的方法。
    //这用到了Java的多态性。
    void sound() http://www.huiyi8.com/jiaoben/
        // TODO Auto-generated method stub
        System.out.println("DaDaDa!"); flash特效
    //Rifle继承自Gun
public class Rifle extends Gun {
    //带参数的构造方法,是特殊的方法,名字必须与类名相同
    public Rifle(String name) {
        this.name = name;
    //Gun类下不同的子类拥有同名的sound()方法,但是内容不同,在调用sound()方法时会根据具体的Gun而自动调用相应的方法。
    //这用到了Java的多态性。
    void sound() {
        // TODO Auto-generated method stub
        System.out.println("Peng! Peng! Peng!");
    //定义Person类
public class Person {
    private String name;
    public String getName() {
        return name;
    public void setName(String name) {
        this.name = name;
    // 体现多态性。
    public void shoot(Person p, Gun g) {
        System.out.println(this.name + " shoot\t" + p.getName() + " using a "
                + g.getName());
        g.sound();
    //在main()函数中测试
public class Test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Person p1 = new Person();
        Person p2 = new Person();
        p1.setName("XiaoWang");
        p2.setName("XiaoLi");
        Rifle r = new Rifle("rifle");
        Carbine c = new Carbine("carbine");
        // 将方法的调用和实现分离,已达到封装的效果。
        p1.shoot(p2, r);
        p1.shoot(p2, c);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值