面向对象思想

什么是面向对象

面向过程:
强调的是过程。也就是完成功能的每一个步骤都需要自己亲力亲为

面向对象:
强调的是对象。也就是让对象帮我们去完成功能

面向对象的好处

  • 将复杂的事情简单化了
  • 更符合人们思想习惯的思想(懒人思想)
  • 将程序员由执行者变成了指挥者

类和对象

类和对象的概念

什么是类

是对现实世界 同一类 具有 共同属性和行为 的 事物的模拟.
例如:学生类

什么是对象

就是某一类事物的具体体现,是类的具体体现
例如:张三、李四、王五

属性和行为

属性:
事物的基本特征 例如:学生类:都有姓名,都有年龄

行为:
事物可以做什么事情 例如:学生类:都会学习,都会吃饭

通过类创建对象,一个类可以创建多个对象

类和对象的关系

类是对象的抽象,而对象是类的具体实例

类的定义

属性用成员变量去表示
行为用成员方法去表示

成员变量:
定义在类中方法外的变量就是成员变量

成员方法:
就是之前的方法去掉了static

示例

public class Student { //属性:用成员变量表示 //所有成员变量都要加上private关键字 //作用:使属性私有化,其他类访问不到,只能被本类使用访问 /** * 名字 */ private String name; /** * 年龄 */ private int age; /** * 体重 */ private double weight; /** * 性别 */ private String sex; //行为:用成员方法表示(没有static关键字的方法) /** * 学习 */ public void study() { System.out.println("好好学习,天天向上"); } /** * 打游戏 * * @param gameName 游戏名 */ public void playGame(String gameName) { System.out.println(name + "喜欢打" + gameName); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }

创建对象并使用

创建对象的格式: 类名 对象名 = new 类名(); Student stu = new Student(); 成员变量的使用格式: 对象名.成员变量名
sout(stu.name); 如果在本类中使用就可以直接写成员变量名 成员方法的使用格式: 对象名.成员方法名(参数);

示例(第一种赋值方式 不用)

public class TestStudent { public static void main(String[] args) { Student stu = new Student(); //属性赋值 对象名.属性名=???? //第一种给属性赋值的方式(不用) stu.name="张三"; stu.sex="女"; stu.age=20; stu.weight=180.0; System.out.println(stu.name); System.out.println(stu.age); System.out.println(stu.sex); System.out.println(stu.weight); //方法调用 对象名.成员方法 stu.study(); stu.playGame("LOL"); }

示例(第二种赋值方式)

public class TestStudent { public static void main(String[] args) { Student stu = new Student(); //第二种给属性赋值的方式 stu.setName("张三"); stu.setAge(18); stu.setSex("男"); stu.setWeight(180.0); System.out.println(stu.getName()); System.out.println(stu.getAge()); System.out.println(stu.getSex()); System.out.println(stu.getWeight()); //方法调用 对象名.成员方法 stu.study(); stu.playGame("LOL"); } }

一个类就是一个数据类型

public class String{
.......
}

public class Student{

}
一个类就是一个数据类型

成员变量和局部变量的区别

定义位置

成员变量:定义在类中方法外。作用于整个类中
局部变量:定义在方法内或方法的声明上。作用于方法里

在内存中的位置

成员变量:在堆内存中
局部变量:在栈内存中

生命周期

成员变量:随着对象的创建而创建。随着对象的消失而消失
局部变量:随着方法的调用而创建。随着方法的消失而消失

初始化值

成员变量:有默认初始化值
局部变量:没有默认初始化值。使用之前必须赋值

构造方法

构造方法的特点:
①类名和方法名相同
②没有返回值类型,连void都不能写

构造方法的调用格式:
new 类名(参数);

构造方法
本身的作用(即使构造方法中什么代码也不写)
就是用来创建对象的,
它还有一个非常重要的作用是进行类中成员变量的默认初始化
我们赋予其的作用
给成员变量进行赋值

注意事项:
①如果没有写构造方法,编译器会默认赠送一个无参构造,如果写了,它就不会赠送了
②构造方法也可以重载

构造器与set方法给属性赋值的区别:
构造器只能给属性赋值一次,set方法可以赋值多次
也只适用于参数不多的情况

示例(第三种赋值方式)

public class Fridge { /** * 颜色 */ private String color; /** * 价格 */ private double price; /** * 品牌 */ private String brand; /** * 打开冰箱门 */ public void openDoor() { System.out.println("打开门"); } /** * 放置 * @param name 放置的东西 */ public void put(String name) { System.out.println("把" + name + "放进冰箱"); } /** * 关上冰箱门 */ public void closeDoor() { System.out.println("关上门"); } public Fridge(){ } public Fridge(String color, double price, String brand) { this.color = color; this.price = price; this.brand = brand; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } }
Fridge fridge1 = new Fridge("黑色", 2333, "小米"); fridge.put("饮料");

封装

就是将不想对外暴露的属性隐藏起来,对外提供一些方法供别人去操作,这样可以更安全,也可以提高代码的复用性

private

private是一个修饰符,它可以用来修饰类中的成员变量或者成员方法,被它修饰的成员只能在本类中访问,不能在其他类中直接访问

如果想进行访问私有的成员,必须要提供一套getset方法

this

this可以用来区分局部变量和成员变量同名的问题

this代表什么呢?
代表当前对象的引用。谁来调用这个方法,this就代表谁

public void setName(String name){ this.name = name; }

一个标准的类(JavaBean)

快捷键

构造方法.png

构造方法.png
setget.png
setget.png

最后修改:2023 年 04 月 07 日
如果觉得我的文章对你有用,请随意赞赏