导图社区 面向对象编程(oop)
面向对象编程(oop)知识梳理,包括面向对象的思想、类、对象、构造器、this关键字、标准Javabean等等。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
面向对象编程(oop)
面向对象的思想
面向:拿或者找
对象:东西
面向对象:拿或者找东西过来编程解决问题
面向对象:把现实世界中的事物全部看成一个一个的对象来解决问题的。(万物皆对象)
面向对象的好处:代码符合人类的思维习惯,编程程序更简单,看程序更容易理解
类、对象
类(设计图):相同事物共同特征的描述
对象:对象是类的具体实例。
对象==实例
在Java中必须先定义类,才能得到对象。
定义类来创建对象使用
定义类的格式
public class类名{
String name;
Public static void start(){}
构造器}
定义类的注意事项:
类名首字母大写,有意义,满足驼峰,不要用关键字,合法的标识符
一个Java文件中可以定义多个类,但只能一个类是public修饰的,而且public修饰的类名必须成为Java代码的文件名称,否则报错!
类中具体怎么写呢?
定义汽车类为例子
一般名词定义成成员变量(属性)
修饰符 数据类型 变量名称=初始值;
private String name;
private double price;
成员变量不建议给初始化,存在默认值,默认值的规则:整型是0,浮点型是0.0,引用类型是null,布尔型是false。
一般动词定义成方法(行为)
具体定义类的例子
public class Car { /** * 成员变量 */ String name; double price; /** * 方法 */ public void start(){ System.out.println(name+"启动了"); } public void run(){ System.out.println("价格是"+price+"的"+name+"跑的很快"); } }
创建对象
类名 对象名=new 构造器();
对象怎么使用
对象名.成员变量
对象名.成员方法
构造器
作用:
初始化一个类的对象,并返回这个对象的地址。
详细格式:
修饰符 类名(形参){……}
构造器的分类
无参数构造器
初始化一个类的对象,并返回这个对象的地址,里面的数据都是默认值
有参数构造器
初始化一个对象,并返回这个对象的地址,并且可以同时为对象赋值
构造器如何调用
类名 对象名称=new 构造器;
注意
任何类写出来自带一个无参数构造器,写不写都有
如果在这个类中定义了一个有参数构造器了,那么无参数构造器就消失了,此时,如果你还要用无参数构造器,你必须自己写一个。
public class Car { String name; double price; /** * 无参数构造器 */ public Car(){ System.out.println("==无参数构造器被调用了="); } /** * * 有参数构造器 */ public Car( String n,double p){ System.out.println("==有参数构造器被调用了=="); name=n; price=p; } }
this关键字
this的作用:代表了当前对象的地址,可以访问当前对象的成员变量和成员方法
this具体用在哪:
用在有参数构造器中
public Car(String name,Double price){ //注意:this在构造器中,代表构造器正在初始化的那个对象 this.name=name; this.price=price; }
可以用在方法中
public void gowith(String name){ //注意:this在方法中,谁调用这个方法this就代表谁 System.out.println(this.name+"正在和"+name+"比赛"); }
封装
面向对象的三大特征:封装,继承,多态。
封装的思想:
决定属性和行为归属谁的问题
定义人类(名称,年龄,吃饭,睡觉)
定义圆类
半径,画圆
如何更好的封装呢?
成员变量建议private私有化,只能本类访问了
合理暴露:
提供成套的getter和setter方法暴露取值和赋值
标准Javabean
是什么?就是所谓的实体类(学生类,老师类,汽车类,票类,人类)
作用:创建对象,封装数据的
标准Bean的书写要求
必须提供无参数构造器。
局部变量和成员变量的区别
位置不同
成员变量:方法外
局部变量:方法中
初始化不同
成员变量:有初始值
局部变量:没有,使用之前需要完成赋值
内存位置不同
成员变量:堆内存
局部变量:栈内存
生命周期
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法调用而存在,随着方法运行结束而消失
作用域
成员变量
任何地方,有对象的地方就可以访问
局部变量
在归属的大括号中