Java面向对象

面向对象编程(OOP)

大致思路

  1. 先设计对象模板,也就是对象的设计图:(Class)

  2. 通过 new 关键字,每 new 一次类就生成一个新的对象(实例化)

对象(Object)

本质上是一种特殊的数据结构(类似一张表),包含属性(成员变量)和行为(方法)。

  • 属性:描述对象的状态(数据)

  • 方法:描述对象能做什么(行为)

类的基本语法

构造器(Constructor)

类似于类中无返回值的方法,用于初始化对象。

特点:

  • 创建对象时,自动调用构造器。

  • 方法名与类名完全一致,且无返回值类型(连 void 也不写)。

应用场景:

  • 在创建对象时初始化成员变量(属性)。

注意:

  1. 类默认自带一个无参构造器(如果未手动定义构造器)。

  2. 若定义了有参构造器,默认的无参构造器会失效,需手动定义无参构造器。

示例:

 public class Person {
     String name;
     int age;
 ​
     // 无参构造器
     public Person() {
         this.name = "Unknown";
         this.age = 0;
     }
 ​
     // 有参构造器
     public Person(String name, int age) {
         this.name = name;
         this.age = age;
     }
 }

this 关键字

表示当前对象的引用,是一个指向自身的变量。

应用场景:

  • 解决局部变量与成员变量的命名冲突。

  • 在构造器中调用其他构造器(需放在第一行,如 this())。

示例:

 public class Person {
     String name;
 ​
     public void setName(String name) {
         this.name = name; // this 区分成员变量和参数
     }
 }

封装(Encapsulation)

面向对象三大特征之一(封装、继承、多态)。

定义:

  • 将对象的属性隐藏(私有化),通过公有的方法(如 getter/setter)访问和修改。

优点:

  1. 提高安全性,防止外部直接修改数据。

  2. 隐藏实现细节,提供简洁接口。

实现方式:

  • 成员变量用 private 修饰。

  • 提供 public 的 getter/setter 方法。

示例:

 public class Person {
     private String name;
     private int age;
 ​
     public String getName() {
         return name;
     }
 ​
     public void setName(String name) {
         this.name = name;
     }
 ​
     public int getAge() {
         return age;
     }
 ​
     public void setAge(int age) {
         if (age >= 0) {
             this.age = age;
         }
     }
 }

javabean(实体类)

一种特殊的类,通常用于存储数据。

要求:

  1. 成员变量全部私有化(private),并提供 public 的 getter/setter 方法。

  2. 提供一个无参构造器(默认或手动定义)。

应用场景:

  • 负责数据的存取,业务逻辑交给其他类处理,实现数据与业务分离。

示例:

 public class Student {
     private String name;
     private int id;
 ​
     // 无参构造器
     public Student() {}
 ​
     // getter 和 setter
     public String getName() {
         return name;
     }
 ​
     public void setName(String name) {
         this.name = name;
     }
 ​
     public int getId() {
         return id;
     }
 ​
     public void setId(int id) {
         this.id = id;
     }
 }

static 关键字

表示静态,属于类而不属于某个对象。

特点:

  • static 修饰的成员(变量、方法)在类加载时初始化,所有对象共享。

  • 可以通过类名直接访问(如 ClassName.staticMethod()),无需创建对象。

应用场景:

  1. 静态变量:存储全局共享数据。

  2. 静态方法:提供工具功能,不依赖对象状态。

注意:

  • 静态方法中不能直接访问非静态成员(需创建对象)。

  • this 不能在静态方法中使用。

示例:

 public class Calculator {
     public static int count = 0; // 静态变量,记录计算次数
 ​
     public static int add(int a, int b) { // 静态方法
         count++;
         return a + b;
     }
 }
 ​
 class Test {
     public static void main(String[] args) {
         System.out.println(Calculator.add(2, 3)); // 输出 5
         System.out.println(Calculator.count);    // 输出 1
     }
 }

面向对象三大特征(补充)

继承(Inheritance)

子类通过 extends 关键字继承父类的属性和方法。

特点:

  • 提高代码复用性。

  • 子类可以重写(override)父类方法。

注意:

  • Java 中是单继承(一个类只能继承一个父类)。

  • 私有成员不能被直接继承。

示例:

 public class Animal {
     public void eat() {
         System.out.println("Eating...");
     }
 }
 ​
 public class Dog extends Animal {
     public void bark() {
         System.out.println("Woof!");
     }
 }

多态(Polymorphism)

同一个方法在不同对象中表现出不同的行为。

实现方式:

  1. 方法重写(子类重写父类方法)。

  2. 方法重载(同一类中方法名相同,参数不同)。

优点:

  • 提高代码灵活性和扩展性。

示例:

 public class Animal {
     public void sound() {
         System.out.println("Some sound");
     }
 }
 ​
 public class Cat extends Animal {
     @Override
     public void sound() {
         System.out.println("Meow");
     }
 }
 ​
 class Test {
     public static void main(String[] args) {
         Animal myAnimal = new Cat(); // 多态
         myAnimal.sound();           // 输出 "Meow"
     }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王嘉俊925

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值