1.类与对象的概念
1.1 什么是对象
对象:我们所⾯对的可以描述其具体形象的事物称为对象。对象可以简单理解为看得⻅摸得着的事物。
描述对象一般从两个方面:属性(特征),方法(行为)
属性:⽤于描述对象具有的特征
方法:用于描述对象具有的行为或功能
例如:描述一个电视机对象
属性: 用于描述对象具有的特征
电视机: 属性(颜色,品牌,价格) 属性值(黑色,小米,2000)
颜色: 黑色
品牌: 小米
价格: 2000
方法: 用于描述对象具有的功能
电视机:方法/功能(播放电视剧,看电影)
播放电视剧()
开机()
关机()
1.2 面向对象编程
⾯向对象程序设计(英语:Object-oriented programming,缩写:OOP)是种具有对象概念的程序编程典范,同时也是⼀种程序开发的抽象⽅针。它可能包含数据、属性、代码与⽅法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提⾼软件的重⽤性、灵活性和扩展性,对象⾥的程序可以访问及经常修改对象相关连的数据。在⾯向对象程序编程⾥,计算机程序会被设计成彼此相关的对象。
1.3 面向过程和面向对象编程
⾯向过程只是针对于⾃⼰来解决问题。⾯向过程的操作是以程序的基本功能实现为主,实现之后就完成了,也不考虑修改的可能性,⾯向对象,更多的是要进⾏⼦模块化的设计,每⼀个模块都需要单独存在,并且可以被重复利⽤,增强可维护性,所以,⾯向对象的开发更像是⼀个具备标准的开发模式。
例如:
⾯向过程:针对开发中程序遇到的每⼀个问题,进⾏单个的编码解决。
⾃⼰做饭,买菜,洗菜,炒菜,⾃⼰吃
⾯向对象:只对结果,不管实现的细节。
到饭馆叫饭,⾃⼰吃
学习面向对象就是学习如何在代码中使用封装,继承,多态
(1)封装:保护内部的操作不被破坏; 安全性
(2)继承:在原本的基础之上继续进⾏扩充; 复⽤性
(3)多态:在⼀个指定的范围之内进⾏概念的转换。可扩展性
对于⾯向对象的开发来讲也分为三个过程:
OOA(⾯向对象分析)、OOD(⾯向对象设计)、OOP(⾯向对象编程)。
面向对象的最终目的是在保证功能实现的基础上,方便后期程序的维护。
2.类的概念
2.1 什么是类
具有相同属性和行为的对象,可以被归为一类。
类:将具有相同属性和方法的对象进行抽象,这就是类。包括属性和方法两大部分。
类限定了对象具有的特征属性和⾏为,因此可以将类看作对象的模板。通过⼀个类,我
们可以创建任意个对象,⽽被创建的同⼀个类任意个对象,都具有相同的属性和⾏为。
类是对象的模板。对象是类的实例。
类是抽象的概念,对象是具体的存在。
同一个类的对象,会具有相同的属性和方法,但是它们的属性值可以不一样,这样可以区分出不同的对象实体。
面向对象编程的步骤:
(1)定义所用对象的类型。
(2)用类型创建具体的对象。
(3)调用对象的属性和方法,完成程序处理。
2.2 类的结构
public class 类名{
//成员属性
//构造方法
//成员方法
}
public class Student {
// 属性: 成员属性,成员变量,全局变量
// 姓名
String name;
// 性别
String sex;
// 年龄
int age;
// 身高
double tall;
// 方法: 成员方法,实例方法
public void eat(){
// this:当前对象
System.out.println(this.name+"吃早餐");
}
public void study(){
System.out.println(this.name+"学习java");
}
}
2.3 类的使用
使用类创建对象,为对象赋值,并调用对象方法
public class Test {
public static void main(String[] args) {
// 使用类创建对象
Student s1 = new Student();
// 设置对象属性
s1.name="张三";
s1.sex="男";
s1.age = 18;
s1.tall = 1.7;
// 调用对象方法
s1.eat();
s1.study();
}
}
类的属性本质上是全局变量,是有默认值的。字符串:null 整形:0.0 布尔:false,而方法内的变量是局部变量,不赋值的时候无法使用
面向对象编程的步骤:
1.根据题目定义类: 定义属性和方法
2.使用类
a.创建测试类,定义main方法
b.在main方法中,使用类创建对象: 类名 变量 = new 类名();
c. 使用创建出来的对象,设置对象属性,访问对象属性,调用对象方法
完成特定功能。
3.构造方法
构造方法:在通过类创建对象的的时候,通过new关键字调用的方法成为构造方法。可以用于为对象属性设置初始值。
public class 类名{
//无参构造
public 类名(){}
//有参构造
public 类名(参数列表){
//初始化属性
}
}
//通过new调用构造方法,创建类的对象
类名 变量 = new 类名();
特征:
(1)构造方法是非常特殊的方法,方法名要与类名完全一样。
(2)构造方法不能写返回值。
(3)构造方法通过new关键字调用
(4)一个类中,可以定义构造,也可以不定义构造。当类中没有定义构造方法时,系统会提供默认的无参构造方法,当类中定义了构造之后,系统将不再提供默认构造。如果定义了有参构造,没有定义无参构造,将无法使用无参构造创建对象。
(5)一个类中可以定义多个构造,可以有参,也可以无参。
作用:
(1)使用类创建对象的时候要调用构造方法。
(2)通过构造可以为对象的属性设置初始值,避免漏掉某些属性不赋值。自定义的构造方法主要用于对象的初始化。
public class Student{
String name;
int age;
String sex;
double height;
public Student() {}
public Student(String name,String sex,int age,double height) {
this.name=name; 10
this.age=age; 11
this.sex=sex; 12
this.height=height; 13
}
public Student(String name,String sex,int age) {
this.name=name;
this.age=age;
this.sex=sex;
}
}
//通过构造方法创建类的对象
Student stu= new Student("孙悟空","男",19,1.7);
4.成员方法
成员方法是为了实现某个具体的功能,例如:打游戏,学习,看电视等。
[访问修饰符] 返回值类型 方法名([参数列表]){
方法体
return 返回值;
}
访问修饰符:表示下定义的方法能够被访问的一个范围,此部分可以省略。属性/方法的访问修饰符一共有四个级别:public,protected,默认,private
返回值类型:必须有,取值:
void(表示这个方法不需要返回结果)
其它任何类型(基本类型/引用类型):表示方法必须要有返回值,而且返回值的类型要和定义的类型一致。
方法名:自己定义,根据标识符的规则(字母,数字,下划线),要按照小驼峰命名。。
参数列表:可以省略,省略的时候表示这个方法不需要参数。如果有参数,在调用方法时必须要按照参数列表的定义传递参数。参数列表中可以定义各种类型的参数。
方法体:方法实现具体功能的代码。
返回值:要和方法的返回值类型结合使用。如果返回值类型时void,此方法不能有返回值(不写return或者return后没有数据)。如果返回值类型不是void,方法最后一定要有返回值,返回的数据要和返回值类型相对应。
依据参数和返回值,有四种成员方法的写法。
(1)无参无返回值
(2)无参有返回值
(3)有参无返回值
(4)有参有返回值