一、包
如果在程序中没有声明包,类将被存放在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:鸟类都包含了飞翔方法,鸵鸟是特殊鸟类,鸵鸟是鸟类的子类,它也获得了飞翔的方法,但飞翔不适合鸵鸟,所以鸵鸟需要重写鸟类方法