目标:
1.面向对象的编程思想
2.理解类和对象的关系
3.掌握类创建的方式
4.掌握对象创建的方式
5.掌握基本方法的创建
1.面向对象的编程思想
一种开发方式、编程思想。
Java、Python、Kotlin、C++…PHP语言就是面向对象的编程语言。
一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。
面向对象: 职责划分(项目规模逐渐庞大的必然结果),每一个职责,每一个专业人员就是面向对象概念中的对象。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。
面向对象思想有三大特性:
- 封装
- 继承
- 多态
2.类和对象的关系
2.1 对象的特征-属性
属性:对象具有的各种特征。 每个对象的每个属性都拥有特定值。(正如生物学:世界上没有两片完全相同的叶子。)
2.2 对象的特征-方法
方法:对象执行的操作(行为)。 在不同的时刻,不同身份的对象可以产生不同的行为。
对象:是用来描述客观事物的一个实体,由一组属性和方法构成。
2.3 类和对象的关系
万物皆对象: 我们生活的世界所能描述的一个实体都可以算作对象。
类:是一个抽象的概念,可以理解为是一个”模板”。它是从一群对象中发现共有的特征和行为而
产生的。而对象我们就可以看成是基于此抽象模板产生的一个具体实例,你能看得到,摸得着。
狗
- 特征(属性)
- 颜色:黑白相间
- 品种:哈士奇
- 名字:二哈
- 特征(行为)
- 拆家…
我们在描述这些对象时,会从它们的属性和行为方面进行描述,同样对于类似的对象,如果它们属性和行为接近则我们会进行分类。
【类和对象的关系:】
- 类是一个抽象的概念。
- 类是从一组具有相似特征的对象中发现抽取而出的。
- 对象是类的一个个体/实例(instance)。
3.掌握类创建的方式
Java是面向对象的编程语言,在Java中首先以类作为基本单位,然后可以基于类去创建很多的独立的对象。
3.1 类的基本语法
其实在 Java 中的类
基本都是以下方 Java 类模板构建而成的,它就是将现实世界中的概念模拟到计算机程序中。 它由一组属性/成员变量(特征)和方法/成员方法/函数(行为)构成。
访问修饰符 class 类名{ // 类名大驼峰命名法 访问修饰符为public的类 必须和文件名相同
// 一组属性
// 一组行为
4.掌握对象创建的方式
4.1 对象的定义
认识了 Java 中类的创建方式,再看看在 Java 中如何根据类模板去产生对象。到了程序中,有些时候你可以把对象理解为是存储一些数据和函数的空间。
类名 对象名 = new 类名(); // Scanner input = new Scanner(System.in);
对象名.属性名 = xxx; // 属性的赋值
对象名.方法名(); // 执行对应的方法
需求:创建一个猫对象。
Cat cat = new Cat();
需求:为对象的信息进行赋值。
cat.name = "喵喵";
cat.age = 10;
cat.color = "black";
// ....
cat.eat();
public class Demo1 {
public static void main(String[] args) {
// 创建对象
Cat cat = new Cat();
// 属性赋值
cat.name = "喵喵";
cat.color = "black";
// 方法调用
cat.eat();
System.out.println("------------------");
// 世界上没有两片完全相同的叶子
Cat c = new Cat();
// 赋值
c.name = "小喵";
c.color = "white";
// 方法调用
c.play();
}
}
5.掌握基本方法的创建
5.1 类的方法
方法(函数)是个“黑匣子”, 完成某个特定的应用程序功能,并返回结果。类的方法定义类的某种行为(或功能)。它的种类有好几种.
和变量名一样,方法名(函数名)也是遵循小驼峰命名法。
方法的两种情况:
1.如果方法具有返回值,方法中必须使用关键字 return 返回该值,返回值类型为该值的类型。返回值只能有一个。
2.如果方法没有返回值,返回值类型为 void.(main 方法就没有返回值)
方法之间允许相互调用,实现重用,提高效率 。
5.2 方法补充
5.2.1 掌握类的构造方法
Student stu = new Student(); // 构造方法
**构造方法:**创建、构建,类的对象的构建和创建的方法。 当对象创建时都会被执行!
构造方法最重要的意义就是Java给我们提供了能够在对象的创建(生命周期)过程中添加代码的能力。
一般构造方法的应用都是用于一些基本信息的初始化(初始化方法)。
-
每一个类默认情况下JVM都会分配一个无参构造。
-
构造方法没有返回值类型,方法名和类名完全相同。
// 无参构造方法 访问修饰符 类名(){ }
-
构造方法分为带参方法和无参方法
// 带参方法可以极大的简化对象的创建和初始化赋值过程 访问修饰符 类名(形参列表){ // 利用形参给成员变量进行赋值 }
public Student(String stuName,String stuClass) { name = stuName; classId = stuClass; } // Student stu1 = new Student("小明", "342"); Student stu2 = new Student("小红", "342"); Student stu3 = new Student("小黑", "342");
-
只要你自己创建任意一个构造方法,那么JVM就不再给你分配无参构造了。所以建议无论自己是否编写构造方法,都去手动编写一个默认的无参构造。
5.2.2 掌握this关键字
// 方法内的变量:局部变量
public Dog(String name,int age) {
// 当局部变量名称和成员变量名称相同时,会采用就近原则
// System.out.println(name);
this.name = name;
this.age = age;
}
成员变量:对象变量、实例变量。
this代表着当前类的一个对象,谁在调用谁就是当前对象。
this作为一个对象,可以去调用属性,也可以调用方法。
this.name
this.printInfo();
但是如果要调用自身的构造方法,那么需要注意的是调用必须是在某个构造方法的有效代码(不包含注释)的第一行。
因为某个构造方法没有执行完毕时,那么属性是不存在的,对象也不存在。
public Dog(){
this(10,20); // 调用自己的带参方法
}
5.2.3 掌握成员变量和局部变量的区别
**成员变量:**类中属性
**局部变量:**方法内变量 Local
- 定义的位置
- 成员变量定义在类中方法外
- 局部变量定义在类中方法内
- 作用域(生效)的范围
- 成员变量可以被类中的方法所共用
- 局部变量只能在定义的方法内使用
- 当局部变量和成员变量同名时,会就近采用局部变量。
- 生命周期(生老病死)
- 成员变量(实例变量) 它是随着对象的创建而产生,随着对象的销毁而销毁。
- 局部变量 它是随着方法的压栈而产生,随着方法的弹栈而销毁。
- 初始值
- 成员变量有初始值
- 局部变量没有初始值,如果不赋值则不能使用
5.2.4 掌握方法重载
**方法重载:**发生在一个类中的,方法名相同,参数列表不同(个数、顺序、类型)的情况。与访问修饰符和返回值类型无关。
方法重载的意义在于我们要定义相同功能的方法,不需要再花费大量时间去定义n种方法名,而且未来在调用时体验更佳。
如果没有方法重载:
例如println():
printStr()
printInt()
printDouble()
printFloat()
...
printa()
printb()
printc()
使用时还需要记忆n种方法名。