面向对象
OOP
补充:
OOA:面向对象分析:学生选课系统中其中肯定是有学生这个对象
OOD:面向对象设计:为了要描述学生的对象,学生对象中有一些属性(学号,电话,性别,籍贯)和方法( huXi() chiFan() zouLu() )
OOP:面向对象编程:是将一些相关的属性和方法归为一个类,将类的实例化看成是对象,在对对象进行编程称之为面向对象的编程,是一种编程的思想
一、基本概念:
1、面向过程和面向对象
面向过程:以“过程”为中心,自顶向下,逐步细化,模块化
面向对象:以“对象为中心”,把需要解决的问题分解为不同的对象(属性和方法),对 象和对象之间是有交互(方法)的。
关系:面向对象是基于面向过程的
语言:机器,汇编,高级(C、C++):面向过程,面向对象
思路:开车
启动,加速,减速,停车 操作过程由程序员通过调用函数来完成,强调顺序
根据实际路况,指挥(驾驶)汽车自动运行,关注的是汽车具备的功能,而操作 顺序变得不再重要
程序构成:
面向过程:模块化(函数)
面向对象:类,类实例(类变量,对象)
适用范围:
规模小,功能简单:解方程
规模大,情况复杂,操作顺序不固定
Java中通过类来表达概念,定义类的格式为:
类:是JAVA中的一个最基本的单元,里面包含了若干的属性和方法(还有构造器)
后羿:
F:filed属性:血量、蓝条、金钱 M:method方法:攻击、行走、技能
首先分类别
class Preson{
属性;
行为(方法);
}//如果类的访问权限为public,则类名必须与文件名一致。
方法定义方式为:
[修饰符1、修饰符2] 返回值类型 方法名(形式参数列表){
}
返回值类型是数据类型和void
方法名可以是任意合法标识符
{}方法体,行为具体步骤
public class Dog{ String name;//狗名 int health;//健康值 int love;//亲密度 String stain;//种类//定义成员方法: public void print(){ System.out.printf("狗的自述:我叫%s,我的健康值是%d,我与主人的亲密度:%d,我的种类是:%s"); } //定义跑行为: public void run(){ System.out.println("欢快地跑!!!!"); } }
另一个文件
public class TestDog{
public static void main(String[] args){
//new出一个狗的对象
Dog dog = new Dog
//调用对象的属性
dog.name="可乐";
dog.health=100;
dog.love=80;
dog.stain="田园犬";
//调用对象的方法
dog.print();
dog.run();
}
}
C:constructor:构造器
定义原则:
1.方法名与类名同名
2.没有返回值和类型声明
3.可以进行重载
Java语言中,构造方法也叫构造器,用于创建实例(对象)的时候进行初始化数据操作。
Dog dog (对象名)=new Dog();
此处Dog就是一个构造方法。构造方法默认是不可见的。
如果你创建了一个类,在没有手动定义构造方法的时候,采用的是系统为操作提供的构造方法,它的形式:
public class Dog{
String name;//狗名
int health;//健康值
//构造方法应用
public Dog(){
name="大黄";
health=100;
}
}
面向对象的三大特征:
- 封装:设计与使用分开(屏蔽内部细节,是操作规范和简单)
- 继承:子类共享父类数据的方法,可以实现代码复用
- 多态:根据消息作出动作,一词多义
3、类和对象
类:是对一类事物的描述,是抽象的概念 模板(模子:打月饼的模子)
对象:是由类生成的(用模子在打月饼,按照图纸生产汽车)万物皆对象。
类和对象的关系: 类是自定义类型,对象是由类造出来的(又叫类变量)
二、JAVA中的类
1.类的构成
属性:描述对象特征 成员变量(数据类型) 人:姓名、年龄、职业 行为:(功能):实现对象的行为、功能 成员方法:
2.Java中类的声明
语法:[修饰符] class 类名{ 属性:(成员变量) 方法:(成员方法) 注意: 修饰符: 访问修饰符: public default (默认的修饰符:一般省略不写) 非访问修饰符: static final class: 声明类的关键字 类名: 标识符,首字母必须大写,见名知意,驼峰命名法,长度适中 {}: 类体的标志,成对出现,封装类的内容。
3、属性(成员变量)的声明:
语法: [修饰符] 类型 属性名称[=初始值]; 注意: 修饰符: 默认 default 类型:任意合法类型(基本、引用) 年龄:int 姓名:String 宠物:类(自定义) 属性名: 同变量含义命名 小驼峰命名 初始值: 不赋值时使用默认值,不同类型的默认值各异 属性的访问: 对象名称.属性名称
4.方法(成员方法)
(1)语法:
[修饰符] 返回值类型 方法名(形参列表){
方法体 (方法功能的实现)
}
(2)注意:· 修饰符: 一般为public,现阶段只使用default 返回值类型: 返回内容的类型,可有可无 方法名称: 小写标识符,一般调用动词 setXx getXx showXxx...... x形参列表: 形式参数:方法是否需要交互,交互时需要哪些信息 形参可有可无 有多个形参用逗号分隔 {}: 方法体,实现方法的功能 需要加入适当的检查或逻辑控制,以保证访问的合法性 (3)成员方法的调用: 对象名称。方法名称(实参列表); 例如stu.show(); ".":对象运算符(成员运算符) (4).成员方法与返回值: 如何获取返回值:return语句 (带会返回值,结束方法调用) return 返回值(只能返回一个值); 返回值类型: 合法类型或void (空,没有返回值) 按返回值对方法分类: 有返回值:强调运行结果 无返回值:关注执行过程 应用: 见代码 如: void show () (5)成员方法与参数
5.构建对象:由类来创建 先定义类 ,在创建(实例化)对象
语法: new 类名(); new: 申请空间 注意: 基本类型变量和类变量初始化的区别
6.this 关键字
表示当前对象 用于指向属性或方法 必须用:当局部变量与类变量重名时,必须使用以便区分 可以省略:局部变量与类变量不重名, ---一般为了可读性(语义),不建议省略
构建对象
构建对象:由类来创建的 先定义类 ,在创建(实例化)对象
语法:
类名 对象的引用 = new 类名( );
内存结构
栈区存储局部变量
堆区存储的是对象、引用类型的内容(对象属性 ,数组元素)
方法区 存储类的信息(源文件编译成字节码文件后,通过类加载器,将类的方法区信息载入方法区)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UZm6kGIw-1617260122357)(C:\Users\l\AppData\Roaming\Typora\typora-user-images\image-20210329091006851.png)]
栈:Last in First Out 后进先出
队列:先进先出