1.什么是继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承格式:
简单例子:
创建父类(Animal):
public class Animal {
public String name;
public int age;
public void doing(){
System.out.println("我的名字是:" + name + ", 今年" + age + "岁了");
}
}
创建子类(Cat),继承父类,关键字为extends
public class Cat extends Animal { //创建一个猫类,继承动物类
public static void main(String[] args) {
Cat c = new Cat(); //创建猫对象c
c.name = "小猫"; //直接获得父类的成员对象并赋值
c.age = 5; //直接获得父类的成员对象并赋值
c.doing(); //调用父类的方法
}
}
由上述例子可知,猫类并没有创建成员变量name和age,也没用成员方法doing(),但是由于继承了父类Animal,于是就可以直接享用父类的成员变量和方法。
注意:一个类只能继承一个父类,不能够继承多个父类,即上述例子,Cat类继承了Amimal类,就不能够再继承其他类,但是可以多级继承,即允许子类如(SmallCat)再继承Cat,即
如果定义一个 Java类时, 并未显式指定这个类的直接父类(即不用extends关键字),则这个类默认继承 java.lang.Object 类,因此可以得出, java.lang.Object 类是所有类的父类。
2.方法的重写(override)
方法的重写指的是子类继承了父类的某个方法,但是不直接使用父类中这个方法的内容,而是自己重写这个方法,并调用重写后的方法。注意:(方法名,参数列表,返回类型必须一致)。
简单的例子:定义父类(Bird)
public class Bird {
public String name;
public void fly(){
System.out.println("我能在天空中飞翔!");
}
}
定义子类(Ostrich)继承父类(Bird),并重写方法fly();
public class Ostrich extends Bird {
public void fly(){ //重写父类方法
System.out.println("我也是鸟,但我不会飞,呜呜呜");
}
public static void main(String[] args) {
Ostrich o = new Ostrich();
o.fly(); //调用,会发现输出的是 “我也是鸟,但我不会飞,呜呜呜”
}
}
扩展知识:重载(overload)
在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。
public class Test {
public static void main(String[] args){
Test t = new Test();
t.play(); //调用没有参数的play()方法
t.play("篮球"); //调用有参数name的play()方法
}
public void play(){
System.out.println("我在玩耍");
}
public void play(String name){
System.out.println("我在玩" + name);
}
}
重写与重载的区别:
1.重写发生在子类和父类之间,重载发生在一个类中。
2.重写要求方法名,参数列表,返回值必须相同,而重载则要求方法名相同,参数列表不同,返回值可以相同也可以不同。