类是来描述一个对象的,
对象是一个真正存在的实体。
1.什么是面向对象
面向对象(Object-Oriented)是一种编程思想和方法,它将程序中的数据和操作数据的方法封装成对象,通过对象之间的交互来实现程序的功能。
面向对象编程的核心思想是将现实世界中的事物抽象为对象,每个对象都具有特定的属性(数据)和行为(方法)。对象之间通过消息传递来进行通信和交互。通过封装、继承和多态等特性,面向对象编程可以提高代码的可读性、可维护性和可复用性。
面向对象编程在很多编程语言中得到广泛应用,如Java、Python、C++等。它是一种强大的编程范式,可以帮助开发者更好地组织和管理程序的逻辑。
2.什么是面向对象编程
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将数据和操作数据的方法组合成一个被称为"对象"的结构体,以此来创建对象的实例。在面向对象编程中,数据被抽象为对象的属性,而操作数据的方法被抽象为对象的方法。面向对象编程的核心思想是将程序的各个组成部分划分为相互独立、具有内聚性和高度封装的对象,通过对象之间的交互来完成程序的功能。
面向对象编程具有以下主要特点:
- 封装性:对象将数据和操作数据的方法封装在一起,只暴露必要的接口供其他对象使用,提供了数据的隐藏和保护,使得程序具有更好的安全性和可靠性。
- 继承性:继承是面向对象编程的重要特性之一,通过继承,一个类(称为子类或派生类)可以继承另一个类(称为父类或基类)的属性和方法,减少了重复代码的编写,提高了代码的复用性和扩展性。
- 多态性:多态是指一个对象可以在不同的情况下表现出不同的行为。通过多态,可以在不改变原有代码的基础上扩展程序的功能,提高了程序的灵活性和可扩展性。
简单来说,面向对象编程就是找对象->创建对象->使用对象。
3.类
3.1 什么是类
在面向对象编程中,类(Class)是一种用来描述具有相同属性和行为的对象集合的模板或蓝图。它定义了一组属性(成员变量)和方法(成员函数),用于描述对象的状态和行为。
3.2类的定义
// 创建类
class ClassName{
field; // 字段(属性) 或者 成员变量
method; // 行为 或者 成员方法
}
class为定义类的关键字,ClassName为类的名字,{}中为类的主体。
类中包含的内容称为类的成员。
属性主要是用来描述类的,称之为类的成员属性或者类成员变量。(可以不初始化直接输出)
那是因为,成员变量会有默认值。
数据类型 | 默认值 |
byte | 0 |
char | \u0000 |
short | 0 |
int | 0 |
long | 0L |
boolean | false |
float | 0.0f |
double | 0.0 |
reference | null |
方法主要说明类具有哪些功能,称为类的成员方法。
例如:
class WashMachine{
//字段 属性 成员变量
public String brand; // 品牌
public String type; // 型号
public double weight; // 重量
public double length; // 长
public double width; // 宽
public double height; // 高
public String color; // 颜色
//行为、成员方法
public void washClothes(){ // 洗衣服
System.out.println("洗衣功能");
}
public void dryClothes(){ // 脱水
System.out.println("脱水功能");
}
public void setTime(){ // 定时
System.out.println("定时功能");
}
}
注意事项:
- 类名注意采用大驼峰定义
- 成员前写法统一为public
- 此处写的方法不带 static 关键字
- 最好一个Java文件一个类
- main方法所在的类一般要使用public修饰
- public修饰的类必须要和文件名相同
- 不要轻易去修改public修饰的类的名称,如果要修改,通过开发工具修改
4.类的实例化
类的实例化是指通过类创建一个具体的对象。在面向对象编程中,类是对象的模板或蓝图,通过实例化类,可以创建多个具有相同属性和方法的对象。
在大多数编程语言中,实例化类的过程通常使用关键字 "new"。具体的语法和步骤可能会有所不同,但基本思想是相同的。
// 定义一个类
class Person {
String name;
int age;
void sayHello() {
System.out.println("Hello, my name is " + name);
}
}
// 实例化类
Person person1 = new Person();
Person person2 = new Person();
// 设置对象的属性
person1.name = "Alice";
person1.age = 25;
person2.name = "Bob";
person2.age = 30;
// 调用对象的方法
person1.sayHello(); // 输出:Hello, my name is Alice
person2.sayHello(); // 输出:Hello, my name is Bob
原理图:
结论:1.通过对象的引用,我们可以去访问对象的成员变量和成员方法。
2.同一个类可实例化多个对象。
5.this引用
在Java中,关键字"this"用于引用当前对象的实例。它可以在类的方法内部使用,指代当前正在调用该方法的对象实例。
使用"this"可以实现以下几个功能:
- 区分实例变量和方法内部变量:如果方法内部的变量与实例变量同名,则可以使用"this"关键字来引用实例变量。
- 在构造方法中调用其他构造方法:如果一个类中有多个构造方法,可以使用"this"关键字来调用其他构造方法。
- 作为方法的返回值:这种情况下,"this"关键字用于返回当前对象的引用本身,从而实现链式调用。
例如:
public class Date {
public int year;
public int month;
public int day;
public void setDay(int year, int month, int day){
this.year = year;
this.month = month;
this.day = day;
}
public void printDate(){
System.out.println(this.year + "/" + this.month + "/" + this.day);
}
}
6.构造方法
public class Date {
public int year;
public int month;
public int day;
// 构造方法:
// 名字与类名相同,没有返回值类型,设置为void也不行
// 一般情况下使用public修饰
// 在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
public Date(int year, int month, int day){
this.year = year;
this.month = month;
this.day = day;
System.out.println("Date(int,int,int)方法被调用了");
}
public void printDate(){
System.out.println(year + "-" + month + "-" + day);
}
public static void main(String[] args) {
// 此处创建了一个Date类型的对象,并没有显式调用构造方法
Date d = new Date(2021,6,9); // 输出Date(int,int,int)方法被调用了
d.printDate(); // 2021-6-9
}
}
结论:1.不止一个构造方法。
2.构造方法作用就是来初始化对象当中的成员。
注意:当你没有写任何构造方法的时候,java会给你提供一个默认的不带参数的构造方法,但是 一旦你有其他的构造方法,java就不会再提供了!!!