Java超详细讲解继承和多态的使用
一、继承
继承是指一个类从另一个类中继承属性和方法的能力。可以将这个继承的类称为子类(派生类),被继承的类称为父类(基类或超类)。
1.1 继承的语法
Java中使用关键字 extends
来继承一个类。
class ChildClass extends ParentClass {
}
1.2 继承的特点
- 子类拥有父类的所有属性和方法(除了父类的构造方法和私有属性和方法);
- 子类可以新增自己的属性和方法;
- 子类可以重写父类的方法。
1.3 继承的示例1
下面这个例子展示了如何通过继承实现一个类的复用。
假设我们编写了一个狗的类,狗有名字、年龄、颜色等属性,还有吠叫、跑动等方法。现在我们又需要编写一个聪明的哈巴狗的类,比狗多了会数数的方法。
class Dog {
private String name;
private int age;
private String color;
public Dog(String name, int age, String color) {
this.name = name;
this.age = age;
this.color = color;
}
public void bark() {
System.out.println("汪汪汪!");
}
public void run() {
System.out.println("狗狗在奔跑!");
}
}
class SmartDog extends Dog {
public SmartDog(String name, int age, String color) {
super(name, age, color);
}
public void count() {
System.out.println("1, 2, 3, 4, 5...");
}
}
这里 SmartDog
继承了 Dog
类,所以我们不需要重新定义狗的属性和方法,而是在原有的基础上新增了一个会数数的方法。
1.4 继承的示例2
下面的例子展示了如果一个类继承了另一个类,如何重写父类的方法。
假设我们编写了一个汽车的类,汽车有颜色、价格、速度等属性,还有启动、加速、刹车等方法。现在我们又需要编写一辆自动挡汽车的类,自动挡汽车需要重新实现刹车方法,因为刹车的方式和手动挡车不同。
class Car {
private String color;
private int price;
private int speed;
public Car(String color, int price, int speed) {
this.color = color;
this.price = price;
this.speed = speed;
}
public void start() {
System.out.println("汽车启动了!");
}
public void speedup() {
System.out.println("汽车正在加速!");
}
public void brake() {
System.out.println("汽车正在刹车!");
}
}
class AutoCar extends Car {
public AutoCar(String color, int price, int speed) {
super(color, price, speed);
}
@Override
public void brake() {
System.out.println("自动挡汽车正在刹车!");
}
}
二、多态
多态是指同样的代码可以适用于不同类型的对象,也就是说,一个对象可以被看作是它所继承的类的对象,也可以被看做是实现了某个接口的对象。
2.1 多态的语法
Java中的多态实现需要依赖于继承和接口,具体的实现方式如下:
class Animal {
public void shout() {
System.out.println("动物在叫!");
}
}
class Dog extends Animal {
@Override
public void shout() {
System.out.println("汪汪汪!");
}
}
class Cat extends Animal {
@Override
public void shout() {
System.out.println("喵喵喵!");
}
}
public static void main(String[] args) {
Animal a = new Dog();
a.shout();
a = new Cat();
a.shout();
}
2.2 多态的特点
- 子类覆盖了父类的方法;
- 父类引用可以指向子类的对象;
- 运行时确定具体调用的方法。
2.3 多态的示例1
下面这个例子展示了如何通过多态实现方法的动态绑定。
interface Fruit {
public void eat();
}
class Apple implements Fruit {
@Override
public void eat() {
System.out.println("吃苹果!");
}
}
class Banana implements Fruit {
@Override
public void eat() {
System.out.println("吃香蕉!");
}
}
public static void main(String[] args) {
Fruit f = new Apple();
f.eat();
f = new Banana();
f.eat();
}
2.4 多态的示例2
下面这个例子展示了如何通过多态实现方法的动态绑定。
class Person {
public void walk() {
System.out.println("人在走路!");
}
}
class Student extends Person {
@Override
public void walk() {
System.out.println("学生在走路!");
}
}
public static void main(String[] args) {
Person p = new Person();
p.walk();
p = new Student();
p.walk();
}
以上就是继承和多态相关的实例讲解,希望可以帮助您理解这两个概念的使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java超详细讲解继承和多态的使用 - Python技术站