继承 示例
1.基本继承与方法重写
package com.example.demo1;// 父类:动物
class Animal {String name;public Animal(String name) {this.name = name;}// 动物发出声音的方法public void makeSound() {System.out.println(name + " 发出了一种声音");}
}// 子类:狗,继承自 Animal
class Dog extends Animal {public Dog(String name) {super(name); // 调用父类的构造方法}// 重写父类的 makeSound 方法@Overridepublic void makeSound() {System.out.println(name + " 汪汪汪");}
}// 子类:猫,继承自 Animal
class Cat extends Animal {public Cat(String name) {super(name); // 调用父类的构造方法}// 重写父类的 makeSound 方法@Overridepublic void makeSound() {System.out.println(name + " 喵喵喵");}
}public class InheritanceExample {public static void main(String[] args) {Animal animal = new Animal("动物");Dog dog = new Dog("旺财");Cat cat = new Cat("咪咪");animal.makeSound();dog.makeSound();cat.makeSound();}
}
继承:Dog
和 Cat
类通过 extends
关键字继承了 Animal
类,这意味着它们可以使用 Animal
类的属性和方法。
继承特点:子类可以继承父类的非私有属性和方法,减少代码重复。
方法重写:Dog
和 Cat
类重写了 Animal
类的 makeSound
方法,根据自身特点给出不同的实现。
2.多级继承
package com.example.demo1;// 父类:交通工具
class Vehicle {void move() {System.out.println("交通工具在移动");}
}// 子类:汽车,继承自 Vehicle
class Car extends Vehicle {@Overridevoid move() {System.out.println("汽车在公路上行驶");}
}// 子类:跑车,继承自 Car
class SportsCar extends Car {@Overridevoid move() {System.out.println("跑车在高速上飞驰");}
}public class MultilevelInheritanceExample {public static void main(String[] args) {Vehicle vehicle = new Vehicle();Car car = new Car();SportsCar sportsCar = new SportsCar();vehicle.move();car.move();sportsCar.move();}
}
多级继承:SportsCar
类继承自 Car
类,Car
类又继承自 Vehicle
类,形成多级继承关系。
方法重写:每一级子类都重写了 move
方法,根据自身特点给出不同的实现。
3.继承与访问修饰符
package com.example.demo1;// 父类
class Parent {public int publicVar = 1;protected int protectedVar = 2;int defaultVar = 3;private int privateVar = 4;public void publicMethod() {System.out.println("父类的 public 方法");}protected void protectedMethod() {System.out.println("父类的 protected 方法");}void defaultMethod() {System.out.println("父类的 default 方法");}private void privateMethod() {System.out.println("父类的 private 方法");}
}// 子类
class Child extends Parent {public void accessParentMembers() {System.out.println(publicVar);System.out.println(protectedVar);System.out.println(defaultVar);// 不能访问 privateVar,因为它是私有的// System.out.println(privateVar); publicMethod();protectedMethod();defaultMethod();// 不能访问 privateMethod,因为它是私有的// privateMethod(); }
}public class InheritanceAndAccessModifiers {public static void main(String[] args) {Child child = new Child();child.accessParentMembers();}
}
继承与访问修饰符:子类可以继承父类的 public
、protected
和默认访问修饰符的属性和方法,但不能继承 private
属性和方法。