面向对象一
一、面向过程 & 面向对象
-
面向对象思想
-
物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的的思索。
-
面向对象适合处理复杂的问题,适合处理需要多人协作的问题!
-
-
对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。
-
面向过程的思想
-
步骤清晰简单,第一步做什么,第二步做什么......
-
面向过程适合处理一些较为简单的问题
-
二、什么是面向对象
-
面向对象编程(Object-Oriented Programming,OOP)
-
面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据
-
抽象
-
三大特性:
-
封装
-
继承
-
多态
-
-
从认识论角度考虑是先有对象后有类。对象,是具体的事物。类是抽象的,是对对象的抽象。
-
从代码运行的角度考虑是现有类后有对象。类是对象的模板。
三、类与对象的关系
-
类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一具体事物。
-
动物、植物、手机、电脑......
-
Person类、Pet类、Car类等、这些都是用来描述/定义某一类具体的事物应该具备的特点和行为。
-
-
对象是抽象概念的具体实列
-
张三就是人的一个具体实列,张三家里的旺财就是狗的一个具体实例。
-
能够体现出特点,展现出功能的是具体的实例,而不是一个抽象概念。
-
我们可以将这些思想转换为代码实现!
-
四、创建与初始化对象
-
使用new关键字创建对象
-
使用new关键字创建的时候,除了分配内存空间之外,还会给创造好的对象进行默认的初始化以及对类中构造器的调用
-
类中的构造器也称构造方法,是在进行创建对象的时候必须调用的。并且构造器有以下两个特点:
-
必须和类的名字相同
-
必须没没有返回值,也不能写void(数据类型)
-
-
案例:学生类
//学生类 public class Student { //属性:字段 String name; int age; //方法 public void study(){ System.out.println(this.name+"同学在说话"); } }
public static void main(String[] args) { //类:抽象的,实例化 //类实例化之后会返回一个自己的对象! //student对象就是一个Stydent类的具体实例 Student s = new Student(); Student xh = new Student(); System.out.println(s.name); System.out.println(s.age); s.study(); System.out.println("===================="); s.name = "小明"; s.age = 16; xh.name = "小红"; xh.age = 15; System.out.println(s.name); System.out.println(s.age); s.study(); System.out.println("===================="); System.out.println(xh.name); System.out.println(xh.age); xh.study(); }
五、注意:
-
一个类即使什么也不写,它也会存在一个方法(隐式)
-
一旦定义了有参构造就必须,无参构造就必须显示定义
-
一个项目只应该存在应该main方法
-
使用new关键字,本质就是在调用构造器(实例化初始值)
六、内存分析
public class Pet {
String name;
int age;
public void shout(){
System.out.println(this.name+"叫了一声!");
}
public Pet() {
}
public Pet(String name, int age) {
this.name = name;
this.age = age;
}
}
public static void main(String[] args) {
Pet dog = new Pet("边牧",3);
System.out.println(dog.name);
System.out.println(dog.age);
dog.shout();
System.out.println("====================================");
Pet cat = new Pet();
cat.name = "缅甸猫";
cat.age = 2;
System.out.println(cat.name);
System.out.println(cat.age);
dog.shout();
}
七、小结
-
类与对象
-
类是一个模板:抽象
-
对象是一个具体的实例
-
-
方法
-
定义
-
调用
-
-
对应的类型
-
基本类型(共有8个)
-
引用类型(对象是通过引用来操作的:栈--->堆)
-
-
属性(字段\Field\成员变量)
-
默认初始化
-
数字: 0 0.0
-
char: u0000
-
boolean: false
-
引用: null
-
-
格式:
- 修饰符 属性类型 属性名 = 属性值
-
-
对象的创建和使用
-
必须使用new 关键字创建对象,构造器 Person kaungshen = new Person();
-
对象的属性调用:kuangshen.name
-
对象的方法调用:kaungshen.sleep()
-
-
类:
-
静态的属性 属性
-
动态的行为 方法
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!