为什么要学习面向对象:
方便管理数据,我们可以把描述一个事物的多个数据,放在一个类中,创建对应的对象,就可以把这些数据封装到对象中
面向对象的构成:
类的组成:
成员变量:
用于存储对象数据的变量,在类中声明
成员方法:
定义在类中的函数或方法,用于操作对象的状态和执行特定的任务
案例:
package Outwork;
public class Student {
// 下列变量为成员变量
int Studentnumber;
String Studentname;
double Studentscore;
// 成员方法
public void Getscore(int MinimumPassingScore) {
if (Studentscore >= MinimumPassingScore) {
System.out.println("恭喜" + Studentname + "考试通过,即将上大学!");
} else {
System.out.println("没有通过,等待补录");
}
}
// 空参构造器
public Student() {
}
// 满参构造器
public Student(double Studentscore, int Studentnumber) {
this.Studentnumber = Studentnumber;
this.Studentscore = Studentscore;
}
}
对象的使用:
创建对象的格式:
类名 变量名 = new 构造器();
如:
Student name = new Student();
访问成员变量:
变量名.成员变量
如:
name.成员变量名
访问成员变量方法:
变量名.方法名();
如:
name.getName();
一个特殊变量—this :
this的概念:
this 是一个关键字,用于在一个对象的内部引用当前对象自身。
具体使用如下:
public class Person {
private String name;
public void setName(String name) {
// 使用 this 关键字引用成员变量,被赋值的name为成员变量name而不是使用参数中的name
this.name = name;
}
}
public class Person {
private String name;
private int age;
public Person setName(String name) {
this.name = name;
return this; // 返回当前对象(一般为成员变量)的引用
}
public Person setAge(int age) {
this.age = age;
return this; // 返回当前对象(一般为成员变量)的引用
}
}
构造器:
作用:
创建对象,并且初始化成员变量
使用场景: 创建对象的时候。 就是在new 的时候
格式:
public 类名(){ // 该构造器为空参构造器
}
注意事项: java会默认给我们提供一个无参的构造器;但如果我们写上了构造器,系统就不会给我们提供默认的了。建议无参与满参构造器都要写上
标准JavaBean:
概念:
标准的 JavaBean 是指遵循特定规范的 Java 类,用于封装数据和提供访问该数据的方法
作用:
标准 JavaBean 是为了实现封装和提供可重用、可移植的数据封装类
get/set方法:
get:
获取属性值
set:
修改属性值/赋值
代码如下:
package Outwork;
public class Demo01 {
// 私有化变成员量,不能在其它类直接调用
private String name;
private double height;
private double weight;
// 满参构造器
public Demo01(String name,double height,double weight){
this.name = name;
this.height = height;
this.weight = weight;
}
// 返回name的值
public String getName() {
return name;
}
// 对name进行赋值
public void setName(String name) {
this.name = name;
}
// 返回height的值
public double getHeight() {
return height;
}
// 对height进行赋值
public void setHeight(double height) {
this.height = height;
}
// 返回weight的值
public double getWeight() {
return weight;
}
// 对weight进行赋值
public void setWeight(double weight) {
this.weight = weight;
}
}
成员变量和局部变量:
定义位置:
成员变量:类中方法外
局部变量:方法中
内存位置:
成员变量:堆内存中
局部变量:栈内存中
初始化值:
成员变量:有
各类型初始化值如下:
byte, short, int, long :0
float,double :0.0
boolean :false
char : null
局部变量:没有初始化值
作用域:
成员变量 :整个类中
局部变量: 当前方法中
生命周期:
成员变量:随着对象的创建而创建,随着对象的消失而消失
局部变量:随着方法的调用而创建,随着方法的消失而消失
public class VariableExample {
// 成员变量
private int memberVariable;
public void method() {
// 局部变量
int localVariable = 10;
// 访问成员变量和局部变量
System.out.println("成员变量值:" + memberVariable);
System.out.println("局部变量值:" + localVariable);
// 赋值局部变量localVariable为20
localVariable = 20;
// 修改成员变量 memberVariable 的值为 30
memberVariable = 30;
}
}
面向对象案例:
public class Teacher {
private String name;
private int age;
private String subject;
// 满参构造器
public Teacher(String name, int age, String subject) {
this.name = name;
this.age = age;
this.subject = subject;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getSubject() {
return subject;
}
public void teach() {
System.out.println("Teaching " + subject);
}
public void introduce() {
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("Subject: " + subject);
}
}
public static void main(String[] args) {
// 利用满参构造器对new出来的新对象进行属性赋值
Teacher teacher1 = new Teacher("John Doe", 35, "Mathematics");
Teacher teacher2 = new Teacher("Jane Smith", 40, "English");
// 调用类中方法
teacher1.introduce();
teacher1.teach();
teacher2.introduce();
teacher2.teach();
}
在上面的代码示例中,定义了一个教师类(Teacher),它具有以下属性和行为:
-
属性:
- name:教师的姓名
- age:教师的年龄
- subject:教授的学科
-
构造方法:
- Teacher(String name, int age, String subject):用于初始化教师对象的属性。
-
方法:
- getName():返回教师的姓名。
- getAge():返回教师的年龄。
- getSubject():返回教师教授的学科。
- teach():打印教师正在教授的学科。
- introduce():打印教师的姓名、年龄和学科信息。
在 main
方法中,创建了两个教师对象 teacher1
和 teacher2
,并使用这些对象调用了类中定义的方法。
这个案例中展示了一个简单的面向对象示例,其中通过创建教师类和使用对象实例来表示和操作教师对象。该例子体现了面向对象编程的封装、继承和多态等概念,以及类和对象的基本用法