【JAVA】面向对象的编程语言(继承篇)

简介: 【JAVA】面向对象的编程语言(继承篇)

前言

在之前的文章中,我们介绍过面向对象的编程语言,今天我们就来就进入到JAVA面对对象的编程世界,今天我们主要来介绍面向对象的编程范式中一个重要的概念——继承。

image.png

继承

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为

类的继承方式

在JAVA中我们可以通过 extends 关键字可以申明一个类是从另外一个类继承而来的:

class 父类 {
}
class 子类 extends 父类 {
}

继承的各种类型

多继承

Java不支持多重继承,即一个子类不能继承多个父类。这是因为多重继承可能会导致一些问题,比如:

  • 命名冲突:如果两个父类中有相同的方法属性,则子类不知道该继承哪一个。
  • 菱形继承问题:如果一个类同时继承自两个父类,这两个父类又都继承自同一个父类,则子类中会存在两个相同的父类,容易造成混乱。

为了解决这些问题,Java引入了接口(interface)的概念,使得一个类可以同时实现多个接口。虽然接口中也可以定义方法和属性,但是接口中的方法都是抽象方法,没有方法体,而且接口中的属性都是常量。这样可以避免命名冲突和菱形继承问题。通过实现不同的接口,一个类可以具有多个不同的功能。

继承的特性

  • 子类拥有父类非 private 的属性、方法
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
  • 子类可以用自己的方式实现父类的方法
  • Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

各种继承关键字

extends关键字

在 Java 中,extends 关键字用于表示一个类继承自另一个类。子类(派生类)继承父类(基类、超类)的所有方法和属性,并且还可以添加自己的方法和属性。被继承的类称为超类或基类,继承自该类的类称为子类或派生类。

class Animal {
    void move() {
        System.out.println("动物可以移动");
    }
}
class Dog extends Animal {
    void move() {
        System.out.println("狗可以跑和走");
    }
}
public class TestDog {
    public static void main(String args[]) {
        Animal a = new Animal(); // Animal 对象
        Animal b = new Dog(); // Dog 对象
        a.move(); // 执行 Animal 类的方法
        b.move(); // 执行 Dog 类的方法
    }
}

Animal 类是一个超类,Dog 类是一个子类。Dog 继承了 Animal 类,并重写了 Animal 类的 move() 方法。在 main() 方法中,创建了 Animal 和 Dog 类的对象,并调用了它们的 move() 方法。由于 Animal 对象调用的是 Animal 类的 move() 方法,而 Dog 对象调用的是 Dog 类重写的 move() 方法。

implements关键字

implements是Java中的一个关键字,用于实现接口。当一个类实现一个接口时,必须使用implements关键字,并且实现该接口中定义的所有方法。

public interface MyInterface {
   public void method1();
   public void method2();
}
public class MyClass implements MyInterface {
   public void method1() {
      System.out.println("Implementation of method1");
   }
   public void method2() {
      System.out.println("Implementation of method2");
   }
}

MyClass实现了MyInterface接口并实现了其中的method1和method2方法。这使得MyClass能够使用接口中定义的方法,并且可以通过多态性来引用MyInterface的实例。

super 与 this 关键字

Java 中的 super 和 this 都是关键字,分别用于访问父类和本类中的成员。

super 关键字

super 可以用来访问父类中被子类覆盖的方法和属性

super.父类方法名(参数列表);//或者
super.父类属性名;
//例如:
public class Father {
    public String name;
    public Father(String name) {
        this.name = name;
    }
    public void eat(String food) {
        System.out.println(name + " is eating " + food);
    }
}
public class Son extends Father {
    public int age;
    public Son(String name, int age) {
        super(name);
        this.age = age;
    }
    @Override
    public void eat(String food) {
        super.eat(food); // 调用父类的 eat 方法
        System.out.println(name + " is " + age + " years old");
    }
}
public class Test {
    public static void main(String[] args) {
        Son son = new Son("Tom", 18);
        son.eat("apple");
    }
}

其中,父类方法和属性必须是被子类继承和覆盖的。在子类中,如果要访问父类中的成员,就可以使用 super 关键字。

this 关键字

this 关键字可以用来引用当前对象的属性或方法

this 关键字可以用来引用当前对象的属性或方法//或者
this 关键字可以用来引用当前对象的属性或方法
//例如:
public class Student {
    private String name;
    private int age;
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void getInfo() {
        System.out.println("Name: " + this.name);
        System.out.println("Age: " + this.age);
    }
}
public class Test {
    public static void main(String[] args) {
        Student s = new Student("Tom", 18);
        s.getInfo();
    }
}

final 关键字

Java 中的 final 关键字用于表示不可变的值或不可变的引用

对于变量,final 修饰的变量表示为常量,一旦被赋值后不能被修改。

  • 对于方法,final 修饰的方法表示方法不能被子类重写。
  • 对于类,final 修饰的类表示类不能被继承。

使用 final 可以使程序更加安全可靠,因为常量值不变,可以防止意外修改值导致程序出错;final 方法和类可以保证方法和类的行为不会被改变,有助于程序设计和优化。


目录
相关文章
|
10月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
259 1
|
10月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
387 0
|
11月前
|
安全 Java 编译器
Java面向对象
本文深入讲解了Java面向对象编程(OOP)的四大特性:封装、继承、多态与抽象,以及方法的设计与使用。通过示例展示了如何用类和对象组织代码,提升程序的可维护性与扩展性。
|
12月前
|
存储 Java 测试技术
Java基础 - 面向对象
面向对象编程是Java的核心,包含封装、继承、多态三大特性。封装隐藏实现细节,提升代码可维护性与安全性;继承实现类间IS-A关系,支持代码复用;多态通过继承、重写与向上转型,实现运行时方法动态绑定,提升系统扩展性与灵活性。
200 0
|
缓存 安全 Java
java面试-基础语法与面向对象
本文介绍了 Java 编程中的几个核心概念。首先,详细区分了方法重载与重写的定义、发生阶段及规则;其次,分析了 `==` 与 `equals` 的区别,强调了基本类型和引用类型的比较方式;接着,对比了 `String`、`StringBuilder` 和 `StringBuffer` 的特性,包括线程安全性和性能差异;最后,讲解了 Java 异常机制,包括自定义异常的实现以及常见非检查异常的类型。这些内容对理解 Java 面向对象编程和实际开发问题解决具有重要意义。
|
安全 Java 开发工具
Java 编程语言
Java 是一门强大而重要的编程语言,具有广泛的应用和良好的发展前景,对于开发者来说,掌握 Java 是非常有价值的。
445 62
|
Java
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
1414 60
|
人工智能 Java 编译器
Java:面向对象
本文介绍了Java编程中的核心概念,包括包的命名规范与自动导入机制、构造方法的特点与使用、`this`和`super`关键字的作用、继承的基本规则、访问权限的设置、封装的意义、多态的实现原理以及`static`关键字的用法。通过详细解析每个知识点,并结合代码示例,帮助读者深入理解Java面向对象编程的核心思想与实践技巧。内容适合初学者及进阶开发者学习参考。
281 0