Java新手入门从零开始掌握面向对象编程

# Java新手入门:从零开始掌握面向对象编程

## 面向对象编程基础概念

面向对象编程(OOP)是一种编程范式,它将现实世界的事物抽象为对象,通过对象之间的交互来解决问题。Java作为一门纯面向对象的编程语言,其核心思想体现在以下几个基本概念:

### 类和对象

类是对象的蓝图或模板,而对象是类的具体实例。

```java

// 定义一个简单的类

public class Student {

// 属性(成员变量)

private String name;

private int age;

// 构造方法

public Student(String name, int age) {

this.name = name;

this.age = age;

}

// 方法

public void introduce() {

System.out.println(我叫 + name + ,今年 + age + 岁);

}

}

```

### 创建和使用对象

```java

public class Main {

public static void main(String[] args) {

// 创建对象

Student student1 = new Student(张三, 20);

Student student2 = new Student(李四, 22);

// 调用对象方法

student1.introduce();

student2.introduce();

}

}

```

## 面向对象的三大特性

### 1. 封装

封装是将数据和对数据的操作封装在一起,通过访问修饰符控制对类成员的访问。

```java

public class BankAccount {

private String accountNumber;

private double balance;

public BankAccount(String accountNumber, double initialBalance) {

this.accountNumber = accountNumber;

this.balance = initialBalance;

}

// 公共方法提供对私有属性的安全访问

public void deposit(double amount) {

if (amount > 0) {

balance += amount;

}

}

public boolean withdraw(double amount) {

if (amount > 0 && amount <= balance) {

balance -= amount;

return true;

}

return false;

}

public double getBalance() {

return balance;

}

}

```

### 2. 继承

继承允许创建新类来继承现有类的特征和行为,实现代码重用。

```java

// 父类

public class Animal {

protected String name;

public Animal(String name) {

this.name = name;

}

public void eat() {

System.out.println(name + 正在吃东西);

}

public void sleep() {

System.out.println(name + 正在睡觉);

}

}

// 子类继承父类

public class Dog extends Animal {

private String breed;

public Dog(String name, String breed) {

super(name); // 调用父类构造方法

this.breed = breed;

}

// 子类特有的方法

public void bark() {

System.out.println(name + 在汪汪叫);

}

// 方法重写

@Override

public void eat() {

System.out.println(name + 正在吃狗粮);

}

}

```

### 3. 多态

多态允许不同类的对象对同一消息做出不同的响应。

```java

public class TestPolymorphism {

public static void main(String[] args) {

Animal myAnimal = new Dog(小黑, 拉布拉多);

myAnimal.eat(); // 调用的是Dog类的eat方法

}

}

```

## 抽象类和接口

### 抽象类

```java

// 抽象类

public abstract class Shape {

protected String color;

public Shape(String color) {

this.color = color;

}

// 抽象方法,没有方法体

public abstract double calculateArea();

// 具体方法

public void displayColor() {

System.out.println(这个形状的颜色是: + color);

}

}

// 实现抽象类

public class Circle extends Shape {

private double radius;

public Circle(String color, double radius) {

super(color);

this.radius = radius;

}

@Override

public double calculateArea() {

return Math.PI radius radius;

}

}

```

### 接口

```java

// 接口定义

public interface Drawable {

void draw(); // 接口方法默认是public abstract

default void display() { // 默认方法

System.out.println(这是一个可绘制的对象);

}

}

// 实现接口

public class Rectangle extends Shape implements Drawable {

private double width;

private double height;

public Rectangle(String color, double width, double height) {

super(color);

this.width = width;

this.height = height;

}

@Override

public double calculateArea() {

return width height;

}

@Override

public void draw() {

System.out.println(绘制一个 + color + 的矩形);

}

}

```

## 实践项目:简单的学生管理系统

```java

import java.util.ArrayList;

public class StudentManagementSystem {

private ArrayList students;

public StudentManagementSystem() {

students = new ArrayList<>();

}

public void addStudent(Student student) {

students.add(student);

}

public void displayAllStudents() {

for (Student student : students) {

student.introduce();

}

}

public Student findStudentByName(String name) {

for (Student student : students) {

if (student.getName().equals(name)) {

return student;

}

}

return null;

}

}

// 测试类

public class TestSystem {

public static void main(String[] args) {

StudentManagementSystem system = new StudentManagementSystem();

// 添加学生

system.addStudent(new Student(王五, 21));

system.addStudent(new Student(赵六, 19));

// 显示所有学生

system.displayAllStudents();

}

}

```

## 学习建议

1. 理解概念:不要死记硬背,要理解每个概念的实际意义

2. 多写代码:通过实践来加深理解

3. 阅读优秀代码:学习别人的编程思路和风格

4. 循序渐进:从简单到复杂,逐步掌握各个知识点

5. 善用调试:学会使用调试工具来理解程序执行流程

通过系统学习这些基础知识,配合大量的练习,你将能够扎实掌握Java面向对象编程的核心思想,为后续的深入学习打下坚实基础。

源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值