跳过正文
JavaSE基础语法知识--面向对象编程
  1. TP` Blog/

JavaSE基础语法知识--面向对象编程

·2 分钟· loading ·
龙城飞将
作者
龙城飞将
最美的是月亮🌙……
目录
Java学习之旅 - 这篇文章属于一个选集。
§ 3: 本文

Java—面向对象编程
#

wallhaven-47wl63.jpg


对象是一种特殊的数据结构,可以用来记住一个事物的数据

Java 面向对象编程(OOP)速览

1. 核心思想
#


  • 万物皆对象:数据与行为打包在类的实例中
  • 抽象建模:用“名词”找类,用“动词”找方法
  • 面向接口编程:面向能力而非实现,解耦与可替换

2. 三大特性
#


  • 封装:隐藏实现细节,通过公开方法暴露能力
    • 访问控制:private、default、protected、public
  • 继承:is‑a 关系,复用父类代码,支持层次结构
    • Java 只支持单继承,可多实现接口
  • 多态:父类引用指向子类实例,运行时根据实际类型分派方法
    • 覆盖 override vs 重载 overload
    • 抽象:抽象类与接口抽离共性,约束实现

注:封装思想将数据和对数据的处理放在同一个类里,避免写重复代码和隐藏细节

public class Star {
    String name;
    int age;
    double height;
    double weight;//对象的属性变量

    public void pointStar() {// 处理对象属性的方法
        System.out.println(" printing " + name);
        System.out.println(" printing " + age);
        System.out.println(" printing " + height);
        System.out.println(" printing " + weight);
    }
}

3. 类与对象的基础
#


  • 先设计类: class
  • 类的组成:字段 field、方法 method、构造器 constructor、代码块、内部类
  • 构造器:用于初始化对象;可重载;无返回值;若无显式构造器会有默认无参构造
  • this 与 super:
    • this.xxx 指当前对象;this() 调用本类构造器(必须在第一行)
    • super.xxx 访问父类成员;super() 调父类构造(第一行)
  • 初始化顺序:静态代码块 → 实例代码块 → 构造器;父类先于子类

4. 类的基本语法
#


4.1 构造器
#

根据参数来自动调用构造器→ 创建符合要求的对象并根据参数进行对象属性初始化

//特殊方法,没有返回值类型,名称是类名
// 无参构造器
    public Star() {}

    // 有参构造器
    public Star(String name, int age, double height, double weight) {

    }

4.2 this
#

this是一个变量,是方法的对象,根据this可以访问这个对象的信息

public class Student {
    public void pointStudent() {
        // 哪个对象调用这个方法,this就是哪个对象
        System.out.println(this);
    }
}

a学生对象的地址

image.png

  • this真要去解决变量名称冲突的问题

4.3 封装
#

合理隐藏,合理暴露

private 来隐藏属性变量,只能在类里访问

利用public 来修饰Get()和 Set()方法来复制属性(控制变量)

4.4 javabean
#

特殊类(实体类)

要求

  • 类中成员变量全部私有,并提供set、get方法
  • 必须提供无参构造器,有参构造器可选

使用场景和作用

  • 实体类只负责数据存储
  • 对数据的业务处理交给其他另一个专门处理业务的对象(实现数据与业务的分离)

4.5 static
#

修饰 成员变量成员方法

  • 静态变量(类变量):→ 有static 修饰,属于类,在计算机里只有一份,会被类的全部对象共享
  • 实例变量(对象的变量):→ 无static 修饰,属于每个对象
public class Student{
	static String name;//静态变量
	int age;//实例变量

}
//直接用类去访问
  • 静态方法: 有static 修饰,属于类
  • 实例方法:无static 修饰,属于每个对象

只为了实现一个功能,且不需要直接访问对象的数据,就定义成静态方法

应用场景

  • 做工具类:提高代码复用,调用方便,提高效率(工具类没有必要创建对象,所以建议私有化构造器)

    private Utils() {}//不能创建对象的作用4.6 继承
    

4.6 继承
#

作用:日高代码的重用性,减少代码的书写,

关键字 extends

  • 子类能继承父类的非私有成员(成员变量和成员方法)
  • 子类对象是由父类和子类共同创建的

  • 权限修饰符:修饰下肢类中的成员能被访问的范围
    • private
    • 缺省:本类、同一个包内访问
    • protected:本类、同一个包内访问、子孙内访问
    • public:任意位置
  • 继承的特点
    • 单继承:一个只能继承一个直接父类
    • 多层继承:JAVA不支持多继承,但是可以进行多层继承
    • 祖先类:JAVA中的所有类都是Object类的子类
    • 就近原则:优先访问自己类中,没有才会访问父类
    • super关键字访问父类的同名成员,类似于this
  • 方法重写
    • 子类重写父类的同名方法(方法名和形参列表必须一样)
    • 建议加上@Override校验注解(重写的标志)
    • 权限要大于等于父类的重写方法
    • 返回值类型要一样或者更小
    • 私有和静态方法不能重写
  • 构造器
    • 创建子类对象时,会先执行父类的构造器然后再执行父类构造器
    • this可以调用兄弟构造器

4.7 多态
#

继承时表现的一种现象:对象多态和行为多态

  • 变量没有多态性,对象多态会继承父类的变量
  • 好处是:
    • 解耦合,便于扩展维护,模块化
    • 父类类型变量作为参数,接受子类对象
  • 多态下不能调用子类的独有功能
  • 强制类型转换可以解决多态下不能调用子类的独有功能
  • 在强制转换前,应该先判断对象类型

Java学习之旅 - 这篇文章属于一个选集。
§ 3: 本文