1355 字
7 分钟
Java-第三章-面向对象(下)
Note
继面向对象基础(类、对象、封装)后,本章深入学习面向对象核心特性:继承、多态、抽象类、接口、Object类、内部类,是Java进阶必备知识点!
面向对象编程(OOP)的核心思想是将现实世界中的事物抽象为程序中的 “对象”,通过封装、继承、多态三大特性实现代码复用与程序扩展。本节我们重点讲解面向对象进阶核心:继承、final关键字、抽象类和接口、多态、Object类、内部类。
继承
1. 核心概念
- 继承:让一个类(子类/派生类)复用另一个类(父类/基类)的属性和方法,是代码复用的核心机制。
- 关键字:
extends - 特点:Java 只支持单继承,一个子类只能有一个直接父类。
- 子类可以重写父类方法,也可以新增自己的成员。
2. 语法规则
// 父类public class 父类名 { // 父类属性和方法}
// 子类继承父类public class 子类名 extends 父类名 { // 子类新增属性和方法}示例
// 父类:Personclass Person { String name; int age;
public void eat() { System.out.println("人在吃饭"); }}
// 子类:Student 继承 Personclass Student extends Person { String studentId; // 子类独有属性
public void study() { // 子类独有方法 System.out.println(name + "正在学习"); }}
public class Test { public static void main(String[] args) { Student s = new Student(); s.name = "小明"; // 继承父类属性 s.age = 18; s.eat(); // 继承父类方法 s.study(); // 调用子类独有方法 }}运行效果
人在吃饭小明正在学习final关键字
1. 核心概念
final表示最终、不可改变,可修饰类、方法、变量。- 修饰类:该类不能被继承。
- 修饰方法:该方法不能被重写。
- 修饰变量:该变量变为常量,只能赋值一次。
2. 语法规则
// final 修饰类:不能被继承final class 类名 {}
// final 修饰方法:不能被重写public final 返回值类型 方法名() {}
// final 修饰变量:常量final 数据类型 变量名 = 值;示例
// final 类:无法被继承final class Animal { // final 方法:无法被重写 public final void run() { System.out.println("动物在跑"); }}
// class Dog extends Animal {} 报错:不能继承final类
public class Test { public static void main(String[] args) { // final 变量:常量,不可修改 final int NUM = 10; // NUM = 20; 报错 System.out.println(NUM); }}运行效果
10抽象类和接口
1. 抽象类
- 用
abstract修饰,包含抽象方法(无方法体),不能实例化。 - 子类必须重写所有抽象方法。
abstract class 抽象类名 { // 抽象方法 public abstract void 方法名();}2. 接口
- 特殊抽象类,全局常量 + 公共抽象方法。
- 关键字:
interface、implements。 - 一个类可实现多个接口。
// 定义接口interface 接口名 { void 方法名();}
// 实现接口class 类名 implements 接口名 { @Override public void 方法名() {}}示例
// 抽象类abstract class Shape { public abstract double getArea();}
// 接口interface Color { void setColor();}
// 子类继承抽象类 + 实现接口class Circle extends Shape implements Color { @Override public double getArea() { return 3.14 * 2 * 2; }
@Override public void setColor() { System.out.println("红色圆形"); }}
public class Test { public static void main(String[] args) { Circle c = new Circle(); c.setColor(); System.out.println("面积:" + c.getArea()); }}运行效果
红色圆形面积:12.56多态
1. 核心概念
- 多态:同一行为,不同子类有不同实现。
- 前提:继承/实现、方法重写、父类引用指向子类对象。
- 好处:提高代码扩展性。
2. 语法规则
父类类型 引用名 = new 子类对象();接口名 引用名 = new 实现类对象();示例
class Animal { public void shout() { System.out.println("动物叫"); }}
class Cat extends Animal { @Override public void shout() { System.out.println("喵喵喵"); }}
class Dog extends Animal { @Override public void shout() { System.out.println("汪汪汪"); }}
public class Test { public static void main(String[] args) { // 多态:父类引用指向子类对象 Animal a1 = new Cat(); Animal a2 = new Dog(); a1.shout(); a2.shout(); }}运行效果
喵喵喵汪汪汪Object类
1. 核心概念
-
Object是Java所有类的顶级父类,任何类默认继承它。 -
常用方法:
toString():返回对象字符串表示。equals():比较对象内容。hashCode():返回哈希值。
2. 语法规则
// 所有类都默认继承 Objectpublic class 类名 {}示例
class Student { String name;
// 重写 toString @Override public String toString() { return "Student{name=" + name + "}"; }}
public class Test { public static void main(String[] args) { Student s = new Student(); s.name = "小红"; System.out.println(s); // 自动调用 toString }}运行效果
Student{name=小红}内部类
1. 核心概念
- 内部类:定义在类内部的类。
- 分类:成员内部类、静态内部类、局部内部类、匿名内部类。
- 作用:访问外部类私有成员,代码封装。
2. 语法规则
class 外部类 { // 成员内部类 class 内部类 {}
// 静态内部类 static class 静态内部类 {}}示例
class Outer { private int num = 10;
// 成员内部类 class Inner { public void show() { // 直接访问外部类私有变量 System.out.println("内部类访问:" + num); } }}
public class Test { public static void main(String[] args) { Outer.Inner inner = new Outer().new Inner(); inner.show(); }}运行效果
内部类访问:10总结
- 继承:
extends,代码复用,单继承。 - final:不可改变,修饰类、方法、变量。
- 抽象类&接口:规范定义,接口可多实现。
- 多态:父类引用指向子类,提高扩展性。
- Object:所有类的父类,提供通用方法。
- 内部类:类中定义类,可访问外部私有成员。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
Java-第三章-面向对象(下)
https://blog.pigeons2023.asia/posts/20260324/