1. 继承简介
- 继承是类和类之间的一种关系,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示,子类是父类的扩展。
- JAVA类中只有单继承,没有多继承。
- 子类继承父类集可以拥有父类的全部方法
- java中所有的类都默认继承object类
代码讲解
public方法直接继承,private属性通过get和set方法进行操纵。
Pet类package Demo02; public class Pet { String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void run(){ System.out.println("动物可以跑"); } }
Dog类
package Demo02; public class Dog extends Pet { private String name = "旺财"; public void shout(){ System.out.println(this.name + "会汪汪叫。"); } }
main
package Demo02; public class Application { public static void main(String[] args) { Dog wangCai = new Dog(); wangCai.run();//Dog类继承了Pet类,因此有run方法 wangCai.shout(); //通过set和get方法操纵父类的私有属性 wangCai.setAge(3); System.out.println(wangCai.getAge()); } }
2. super
上述代码示例中,可以在Dog类中也写一个run方法,并使用super继承父类的run方法。
public void run(){ super.run(); //继承父类的run方法 System.out.println(this.name + "欢快的跑"); }
2.1 super注意点
(1)super只能出现在子类的方法或构造方法中
(2)super在子类的构造方法中调用父类的构造方法时,必须位于构造方法的第一个
(3)super和this不能同时调用构造方法(因为两者都需要位于第一个)
2.2 super 与 this 的区别
(1)代表对象不同
- super:代表父类对象的引用
- this:代表本身调用者这个对象
(2)前提条件 - super:只能在继承条件下才可以使用
- this :没有继承也可以使用
(3)构造方法 - super:父类的构造
- this:本类的构造
3.方法的重写
- 静态方法不是重写,方法的调用之和左边定义的数据类型有关
- 非静态方法的public,方法重写
- 重写都是方法的重写,和属性无关
代码示例
//main方法 package Demo; public class Application { public static void main(String[] args) { A a = new A(); a.test(); B b = new A(); b.test(); } } //父类 package Demo; public class B { public static void test(){ //使用static,该方法将不会被重写 System.out.println("B=>test"); } } //子类 package Demo; public class A extends B{ public static void test(){ System.out.println("A=>test"); } } //执行main方法输出的结果为:A=>test B=>test //将子类和父类的方法修饰符static都去除后的结果:A=>test B=>test,此时为方法的重写
注意点
(1)重写是有继承关系的子类重写父类的方法
(2)重写方法的方法名和参数列表都必须相同,但方法体不同
(3)抛出的异常:范围可以缩小但不能扩大
(4)修饰符的范围可以扩大(子类大于父类)但不能缩小,public > protected > default > private