继承与多态

一、包

如果在程序中没有声明包,类将被存放在default包中,default包中没有名称,不建议采用default包的形式

声明包语法:package<包名>

声明一个包的语句必须写在类中的第一行

导入包语法:import<包名><类名>

包的访问权限:一个包中具有缺省访问权限只能在同一个包中引用,public访问权限成员(类、属性和方法统称),public成员可以被其他包中类访问

二、继承

继承是面向对象程序设计的一个重要特征,通过继承原有类派生出来的子类而构造出更为复杂的子类,子类既有新定义的行为特征,又继承了原有类的行为特征,使用extends关键字实现继承,继承的类称为子类,被继承的类称为父类,也被称为基类、超类

继承语法:

[修饰符] class 子类名 [extends 父类名]{

      //类定义部分
}

使用继承类的特性时,需要注意子类可以继承父类中访问权限public、protected、default的成员变量和方法,继承实现了代码复用,易于程序扩展,减少代码重复,实现代码的复用

//父类
public class Weapon{
        //定义变量
            string name;
            int attack;
            //构造方法
        public Weapon(string name,int attack)
            {
                system.out.println("执行父类方法!");
                this.name=name;
                this.attack=attack;   //this代表当前类
            }
            //定义一个攻击方法
            public void attack()
                {
                    System.out.println("武器名:"+name+"攻击值:"+attack)
                  }
}


//创建子类Sword   继承Weapon类

public class Sword extends Weapon{

       public Swork(string name,int attack)
            {
              super(name,attack);    //用super使用父类的属性和方法
            }
}


//创建测试类含main方法
public class ExtendsTest{

  public static void main(String[] args){

    //创建对象   用父类指向子类
  Weapon weaper=new Sword ();
  weaper.name="剑圣";
  weaper.attack=1200;
   weaper.attack();
         }
}

子类无法继承父类的私有成员,在实际开发中不建议让子类继承父类的属性,因为子类继承父类的属性会打破父类的封装性

Java中的继承为单继承,即一个子类只能有一个直接的父类,构造方法也可以实现方法的重载

三、重载和重写

重载:一个类中可以有多个名称相同的方法,但这些方法的参数必须不同,执行时根据参数个数与类型来判断调用哪个方法

注意一下几点:1、同一个类中方法名相同,参数列表不同(个数不同,类型不同);2、返回值类型不能用于区分方法的重载

重写子类扩展了父类,子类是一个特殊的父类,子类以父类为基础,额外增加新的属性和方法,子类需要重写父类的方法 eg:鸟类都包含了飞翔方法,鸵鸟是特殊鸟类,鸵鸟是鸟类的子类,它也获得了飞翔的方法,但飞翔不适合鸵鸟,所以鸵鸟需要重写鸟类方法

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值