本篇文章为你整理了面向对象编程(OOP)(面向对象编程语言)的详细内容,包含有面向对象编程是什么意思 面向对象编程语言 面向对象编程和面向过程编程的区别 面向对象编程表情包 面向对象编程(OOP),希望能帮助你了解 面向对象编程(OOP)。
思考解决问题需要做出哪些分类, 然后对这些分类进行单独思考和研究
最后,将分类下的细节进行了面向过程的研究
面向对象适用于复杂问题, 适合处理多人协作的问题
如: 建一栋大厦, 需要分类, 建材采购; 外观设计; 外围建筑; 室内设计...等等模块, 最后构建成大厦, 而分类的问题就是面向过程的研究
对于复杂事物, 从宏观上、从整体上分析, 需要使用面向对象的思路来分析整个大系统(将大厦分类成建材采购; 外观设计; 外围建筑; 室内设计...) 但是, 具体到微观操作后, 需要使用面向过程的思想(具体建材采购; 外观设计; 外围建筑; 室内设计...该如何执行)
面向过程是自己把每个方面步骤都写一遍。面向对象是把别人写的步骤作为基础指令再编写步骤实现更复杂的功能。
封装: 一个存钱罐, 对外留一个小口取钱
继承: 儿子会继承父亲的所有东西. 儿子有了父亲的所有特性和东西
多态: 同样是学习, 但你我学到的东西都是不同的(同一事物表现出的多种形态)
类是对象的模板(人民币的属性和模样就是类, 而对象就是根据类创建一张一张5元,100元等)(人都是有名字,性别,年龄等属性构成类即模板, 而具体的张三,男,22就是一个类的对象)
方法的回顾
修饰符: public static / public void等(static/void可不写)
返回类型: 基本数据类型和数组
**break和return区别: **
**break是跳出switch和结束循环; **
return是用于方法的结束, 方法内,return语句后都不无效
参数列表: (参数类型 参数名); (int a) (int[] x)等
递归的return: 每次的return是返回到上次调用的方法的时候
遵循一个原则:被static修饰的内容会跟随类的加载而加载,所以静态化的内容可以不用实例化就直接调用,同时两个静态方法之间也可以互相调用
user是对象的引用,为实参,然后创建一个副本temp,把它传递给形参user1。但是,他们实际操作的都是堆内存中的同一个User对象。因此,对象内容的修改也会体现到实参user上。
动物、植物、手机、人...
Person类、Animal类、Car类等, 这些类都是用于描述/定义某一类具体事物应具有的特点和行为
张三就是人(类)的一个具体实例; 家里的旺财就是狗(类)的一个具体实例
能够体现出特点, 展现出功能是具体的实例, 而不是一个抽象概念
// 类是抽象的; 需要实例化
// 实例化后会返回一个对象; idea的功能,你按住alt+enter就行了
//stu_1就是对象的变量或者盒子, stu_1就是一个根据Students类的具体实例
//以下代码产生了两个个不同对象; 类可以产生很多对象(这些对象都有共同属性, 如名字,年龄等)
//根据学生类(模板)创建两个具体的学生对象
Students stu_1 = new Students();//实例化变量stu_1(可以理解一个叫stu_1的空壳/地址(指针),但还未对其进行添加属性,如还没给stu_1躯体的姓名,年龄等)
//stu_1对象添加属性的赋值
stu_1.name = "WoOD";
stu_1.age = 18;
System.out.println(stu_1.name);
System.out.println(stu_1.age);
System.out.println("=============================");
Students xMing = new Students();//实例化变量xMing(可以理解一个叫xMing的空壳/地址(指针),但还未对其进行添加属性,如还没给xMing躯体的姓名,年龄等)
//对象添加属性的赋值
xMing.name = "小红";
xMing.age = 17;
System.out.println(xMing.name);
System.out.println(xMing.age);
上述代码的实例化的stu_1和xMing可以理解为就是刚出世的婴儿, 婴儿刚出世没有名字没有年龄等, 但遇到婴儿,我们本能都会叫其小宝宝等代号, 而stu_1就是代号(对象)而已
更可以理解为是类的抽象概念代号; 类的stu_1其实就是一个对象空壳(未添加属性值的空壳/地址;), 我们是可以对这个空壳进行增加属性值
换一种说法, 女盆友这个抽象概念, 当实例化对象时可以是未来女友、现女友、前女友、前前女友等对象(未来女友、现女友、前女友都是new出来的对象变量名,只是没给""女友们"添加属性值)(也可以理解宠物类, 猫、狗、熊猫等就是实例化的对象名,但未赋属性值,就像猫猫的name还没有叫咪咪)
对象名: 前女友、现女友等, 其实存放地址/指针而已, 就是这些对象名是会指向一个存放实体名字或年龄等属性(名字或年龄如果我们没有进行添加就是默认null) (想象成: 一个"女友"类, 根据"女友"类的模板创建了"前女友、现女友等"对象名, 而对象名(地址的变量名)就是存放/指向了name和age等属性的地址)
当"现女友"的name=沈小婷,age=23, 就是对"现女友"这个对象添加了属性值(记住默认值是null/0)
当 前女友 的name=白知宪,age=19, 就是对前女友这个对象添加了属性值(记住默认值是null/0)
当"前前女友"的name=宋河英,age=25, 就是对"前前女友"这个对象添加了属性值(记住默认值是null/0)
"未来女友"这个对象, 由于我还没有"未来女友", 所以我不知道, 但由于我根据类(模块)创建了一个叫"未来女友"的对象, 因此当输出"未来女友"这个对象的属性name和age都会采用默认值null/0
"未来女友"对象的name=李Luda, age=25(最近又被颜值吸引了)
用new创建对象时, 除了分配内存空间之外, 还会给创建好的对象进行默认值初始化和类中构造器的调用
类种构造器也称为构造方法, 是在进行创建对象的时候必须要调用的, 并且构造器有以下特点
必须和类名相同
必须没有返回类型, 也不能写void
一个类即使啥都没写也会生成一个构造器(记住在最右边Application文件运行一次, 中间的class文件才有;不运行最右边的文件一次, class文件不会有"无显"构造器)
public PersonDemo() {//无参构造
this.name = "WoOD";//当使用构造器时都是有参构造时, 无参构造 内 可以不写,无参构造的框架还是要写的
//当对象调用的是无参构造的话,这个无参构造器会直接对其name属性值进行WoOD的初始化,不会像之前取null
public PersonDemo(String name) {//有参构造
//有参构造一旦定义, 上面的无参构造必须写出来
//没有 有参构造, 上面的无参构造可以不写, 在一开始的class文件中会看到自动添加了默认了Person构造(Java文件没写哦)
//1无参2有参,就会分别调用互不影响
//就是方法重载
this.name = name;
public PersonDemo(String name, int age) {
this.name = name;//name就是形参, 记住是当前对象的name
this.age = age;
//alt + insert
//会自动生成构造器(可以选择生成有参或无参)
//可以把上面的代码删除试试
/*Test
package ObjectDemo;
//一个程序应只有一个main方法
public class Application {
public static void main(String[] args) {
//下述person_1对象是无参数的,所以会自动跳转到无参数的Person
PersonDemo person = new PersonDemo();
System.out.println(person.name);
//针对PersonDemo文件的有参构造
//类似于方法重载
//下述person_1对象是有参数的,所以会自动跳转到有参数的Person
PersonDemo person_1 = new PersonDemo("WoOD_1", 22);
System.out.println(person_1.name + " " + person_1.age);
你声明的dog对象赋值了Pet的模板,这个模板里有变量比如名字,年龄,所以这个dog也是变量,你得给他赋值,而赋的值存放在堆里,dog就是指向存放值的地方
直接看视频吧, 真的不难理解, 不要被憨批弹幕的给骗了, 多看两遍, 我有时候都是重复左方向键一直返回看的(还有视频中的shout是方法,不是构造器)
以上就是面向对象编程(OOP)(面向对象编程语言)的详细内容,想要了解更多 面向对象编程(OOP)的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。