Java面向对象编程思想
什么是面向对象?
客观世界中具体存在的事物称之为对象
万物皆对象
可以用代码编写世间万物
面向对象编程是java的一大特性,是基于面向过程开发的
**面向过程编程思想:**将要完成的功能需求,按照需求进行步骤划分,按照步骤一步一步完成最后实现结果(这个活让我做,我第一步干什么。。。。。。最后完成)
**面向对象编程思想:**所以事情与功能需求都由一个或多个对象所提供的不同方法进行完成,由我们调用多个对象的不同方法进行完成(这个活让我做,我记得谁能干什么 让他一部分,另一个人能干什么 让他干一部。。。。最后完成)
面向对象思想特点
是一种更符合我们思想习惯的思想
可以将复杂的事情简单化
将我们从执行者变成了指挥者
因为面向对象的广泛性,面向对象编程遇到一个问题,对象太多,但具体执行的只有某一个对象,如果想要动态编程,需要引入类的概念
一群对象的统称
在java编写代码过程中对对象的编写 对类的创建
面向对象本质就是面向过程只不过将每一步自己要执行的内容交由可以完成的对象去完成。
面向对象编程实际就是将方法书写在不同分类的类中,在其他包中或类中当需要使用时,可以创建相应的对象调用相应的方法进行功能的实现(代码梳理性更强、复用性更强、冗余更低 )
类的创建
右键-》new-》class-》填名-》自动生成
package 包名
public class 类名 {
}
类与对象关系:
类是大量对象共性(属性、行为)的抽象
对象是类在现实中具体的表现
类是创建对象的模板
类的组成
1、类的声明(声明一个类,类似于变量的声明,但与变量不同,类的声明可以直接使用)
2、类体{}(包含类中内容)
a)**属性:**用于描述这个类
**属性的书写:**就是java变量的书写
b)**行为:**这个类可以做什么
**行为的书写:**就是java方法的书写
定义一个类的步骤
1、定义类名
2、编写类的属性
3、编写类的方法
//学生类
public class Student {
String name;// 姓名String schoole;// 学校int age;// 年龄//学习方法public static void study() {
System.out.println("学习使我快乐");}//学习方法重载方法public static void study(int hours) {
System.out.println("学习了" + hours + "小时");}
类的使用
对象名.属性名 进行赋值与获取数据操作
对象名.方法名
Java面向对象编程
1、将客观世界中的对象信息化(使用对象进行描述)
2、Java中最基本的执行单位为对象,但是最基本的保存数据的为类
分析类的作用
1、将指定方法放在指定类中,通过相应类的对象进行方法的调用(保存方法)
2、可以实现现实对象的信息化(使用对象保存信息)
练习:
汽车类
手机类
对象数据化
静态变量与静态方法
又称之为类变量与类方法
类中所有对象公用的属性与方法
不需要使用对象调用直接通过类名就可以直接使用
静态变量与静态方法统称静态成员(类成员)
实例变量与实例方法
又称之为对象变量与对象方法
实例变量与实例方法统称为实例成员(对象成员)
static:静态的
static可以修饰类中的属性和方法,
使用static修饰的变量为静态变量,未使用static修饰的变量为实例变量
使用static修饰的方法为静态方法,未使用static修饰的方法为实力方法
类成员可以直接通过类名来访问,对象成员必须通过对象名访问(类成员也可以通过对象名)
静态变量与实例变量区别
静态变量在内存中只有一个内存空间,在加载类的过程中完成静态变量的内存分配,可以直接通过类名来访问。
每创建一个新的实例对象,就会为实例变量分配不同的内存,各个对象访问自己的实例变量
无论创建了一个类的多少个对象,静态变量只初始化一次,所有的实例都可以访问此静态变量,而且可以通过类名直接访问。
访问上的区别
被static修饰的方法只能访问被static修饰的方法与变量
未被static修饰的方法能访问所以变量与方法
Static关键字
静态的
1、用于修饰属性方法使属性方法变为静态方法(公共属性、方法)
2、static静态代码块(用于进行初始化执行)
Static静态代码块常用于初始化执行
static {
System.out.println("静态代码块");}
在类第一次被调用的时候执行
在第一次new的时候才会调用执行且只执行一次
Final关键字
最终的、最后的
什么是常量?
在程序运行过程中值不会改变的量称之为常量
怎么声明一个常量?
想要自己声明一个常量,必须使用final关键字进行修饰(将一个变量变成常量)
常量书写语法与变量一致
final 数据类型 常量名=值;
常量名命名 所有字母以大写字母命名,且多个单词之间使用下划线“_”隔开
例如PI TEST_VALUE
被final修饰的变量只允许赋值一次
Final与static同级(final可以修饰类成员 static也可以修饰常量)
构造方法
在创建对象new的过程中,实际上是调用类的构造方法创建相应对象并为所有属性赋初始默认值,然后将创建对象返回
在类的书写过程中,如果没有显示的创建一个类的构造方法,那么在运行时,系统会动态的添加一个默认的无参的构造方法(没有参数列表,只会将属性赋值为相应数据类型初始值)
但是,如果在类的创建中,显示的书写了任意构造方法,那么系统不会再动态生成无参构造方法
构造方法没有返回值
构造方法不是方法:
方法由五部分组成 修饰符 返回值类型 方法名 参数列表 方法体
返回值类型必须有 没有返回值使用void 构造方法连void都没有
方法的调用不论是静态方法还是实例方法都可以通过对象名.方法名()进行调用 构造方法只能通过new关键字调用
构造方法是方法:
构造方法时用来初始化对象信息的特殊方法,因为其特殊性需要特殊的调用方式
构造方法创建对象赋初始值并返回 返回的是固定当前类的对象 返回值类型固定
构造方法方法名固定为类名 返回值与类名一致
构造方法的特殊性
构造方法的主要作用是完成对类对象的初始化工作
在创建new()一个类的新对象时,系统会自动调用该类的构造方法为新对象初始化
构造方法不能由编程人员显式地直接调用
构造方法没有返回类型
构造方法的方法名与类名相同
在Java语言中,每个类都至少有一个构造方法
如果类的定义者没有显式地定义任何构造方法,java编译器将自动为类提供一个默认的构造方法,默认构造方法没有参数
在Java类中,一旦类的定义者显式地定义了一个或多个构造方法,系统将不再提供默认的构造方法
构造方法的书写特点
修饰符多为public
无返回值
方法名固定
参数列表已知
方法体多为属性赋值操作
一个类完整的书写格式
package com.yunhe.day1202;
//类的创建
//修饰符 class关键字 类名(首字母大写 驼峰命名法)
public class ClassTest {
//类体的书写//1、属性//类属性 (static修饰的属性) 成员属性(未被static修饰的属性)//变量:数据类型 变量名 [=初始值] 常量:final 数据类型 常量名=初始值//变量名:驼峰命名法 常量名:所有字母大写 多个单词命名使用下划线_进行连接//2、构造器(构造方法)//创建对象并为对象赋值//语法:修饰符 类名 参数列表 方法体(赋值语句)//不能被直接调用 使用关键字new由系统调用//当局部变量命名与属性相同时,在使用局部变量为属性赋值会出现冲突使赋值操作变为为局部变量赋值局部变量//使用this关键字来指代当前要赋值的对象变量 通过 this.属性名来定位要操作的属性//3、方法//由修饰符 返回值类型 方法名 参数列表 方法体五部分组成//类方法 实例方法 命名遵循驼峰命名法//类方法只能访问类变量与调用类方法//实例方法既可以访问实例变量调用实例方法也可以访问类变量调用类方法//need just world world has world 你的就是我的 我的还是我的
}