继承: 在父类中定义的内容,在子类中可以直接使用,不需要再次定义,增强的程序的重用性.
1、关键字:extends
public class Test {
public static void main(String[] args) {
Dog dog1=new Dog();
dog1.setName("viky");
dog1.setHealth(95);
dog1.setStrain("二哈");
System.out.println("名字:"+dog1.getName()
+"\n健康值:"+dog1.getHealth()
+"\n品种:"+dog1.getStrain());
}
}
class Pet{
private String name;
private int health;
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health=health;
}
}
class Dog extends Pet{
private String strain;
public String getStrain() {
return strain;
}
public void setStrain(String strain) {
this.strain=strain;
}
}
2、继承中的构造方法:
在创建子类对象时,会先调用父类的构造方法,再调用子类的构造方法.如果在子类构造方法中加入了super()会调用父类指定的构造方法.
如:
public class Test {
public static void main(String[] args) {
Dog dog2=new Dog();
}
}
class Pet{
public Pet() {
System.out.println("父类无参构造方法");
}
}
class Dog extends Pet{
public Dog() {
System.out.println("子类无参构造方法");
}
}
输出结果:
父类无参构造方法
子类无参构造方法
3、super关键字: 指代父类对象
(1)如果用在子类的构造方法, 可以调用父类的构造方法,但必须位于子类构造方法的第一条语句;
如:
public Dog(String name,int health,String strain) {
super(name,health);
this.strain=strain;
}
(2)如果用在子类的普通方法中,可以调用父类的方法,尤其是被子类重写的父类方法.
public class Test {
public static void main(String[] args) {
Dog dog1=new Dog("viky",95,"二哈");
dog1.print();
}
}
class Pet{
private String name;
private int health;
public Pet(String name,int health) {
this.name=name;
this.health=health;
}
public void print() {
System.out.println("名字:"+getName()+"\n健康值:"+getHealth());
}
public String getName() {
return name;
}
public int getHealth() {
return health;
}
}
class Dog extends Pet{
private String strain;
public Dog(String name,int health,String strain) {
super(name,health);
this.strain=strain;
}
public void print() {
super.print();
System.out.println("品种:"+getStrain());
}
public String getStrain() {
return strain;
}
}
输出结果:
名字:viky
健康值:95
品种:二哈
4、方法重写:在父类和子类中,定义方法名、参数列表和返回值都一样的方法,完成方法重写.
如:
public class Test {
public static void main(String[] args) {
Dog dog1=new Dog("viky",95,"二哈");
dog1.eat();
}
}
class Pet{
private String name;
private int health;
public Pet(String name,int health) {
this.name=name;
this.health=health;
}
public void eat() {
}
}
class Dog extends Pet{
private String strain;
public Dog(String name,int health,String strain) {
super(name,health);
this.strain=strain;
}
public void eat() {
System.out.println("狗狗喜欢吃骨头");
}
}
输出结果:
狗狗喜欢吃骨头
5、成员变量不可以重写
public class Test {
public static void main(String[] args) {
Pet p1=new Dog("viky",95,"二哈");
System.out.println(p1.num);
}
}
class Pet{
int num=10;
private String name;
private int health;
public Pet(String name,int health) {
this.name=name;
this.health=health;
}
}
class Dog extends Pet{
int num=20;
private String strain;
public Dog(String name,int health,String strain) {
super(name,health);
this.strain=strain;
}
}
输出结果:10
本文详细介绍了Java中的继承概念,包括如何使用`extends`关键字实现类的继承,以及在子类中如何调用父类的构造方法。通过实例展示了`super`关键字的用法,用于在构造方法中调用父类的构造方法和在普通方法中调用父类方法。同时,文章还解释了方法重写和成员变量的不可重写性,强调了代码复用和类间关系的重要性。
1034

被折叠的 条评论
为什么被折叠?



