面向对象思想
思想决定行为
面向对象决定了java的代码的编码方式
编程思想:
面向过程:凡事必躬亲,一步一步的去完成 ->c语言
面向对象:自己的事情别人做 -> 懒人思维
面向函数:忽略对象,只要能把事情完成不在乎谁来 --> Lambda
面向对象思想的特性:封装 继承 多态
面向对象思想的特点:
1.符合正常的思维
2.让复杂的事情简单化
3.让我们从执行者变成调用者
洗衣服:
面向过程: 泡一泡 -> 扭一扭 -> 揉一揉 -> 晾一晾
面向对象:打开洗衣机 -> 衣服丢进去 -> 开开关 对象:洗衣机
买电脑:
面向过程:打车去广埠屯 -> 和老板讨价还价 -> 组装 -> 打车回家
面向对象:打开京东APP -> 选电脑 -> 下单 -> 对象:京东
服务员点单: -> 对象:服务员
万物皆对象
面试环节如何回答面向对象的理解:
java语言是以面向对象思想为核心的编程语言,面向对象思想更符合我们平时的思维习惯,把复杂的事情简单化,把我们以执行者变成指挥者,在Thinking in Java这本书中有万事万物皆对象的描述,世间万物皆可是我们调用的对象.比如说面试官您面试这个事情就涉及到了面向对象思想.面试官您面试肯定是因为公司项目上有了更多的需求需要完成,以您的实力完全可以一人完成,但是您有更多重要的工作去协调,所以老板使用了您面试的功能来招聘一些具备开发功能的人列如我.帮助您完成任务.--->在代码中的应用.
类和对象的关系
类:class -> 种类,类别 -> 一类事物 -> 范围
类是事物的抽象
对象: 此类事物中具体的那一个
类是事物的抽象,对象是此类事物的具体化! -> 我们使用的是对象
现有类,再有对象
如何定义描述类
在事物描述类中千万不要写方法:
格式:
public class 类名{
//属性 -> 成员变量:定义在类中方法外的变量
//行为 -> 成员方法: 定义在类中方法外的方法(方法内不能定义方法) -> 所有方法都是成员方法
}
列如: 学生事物
public class Student{//你要描述什么事物,类名就写什么.见名知意,类名大驼峰式命名
//属性:成员变量
String name;
int age;
//属性只需写你需要使用的 -> 根据需求来
}
如何创建对象
格式:
类名 对象名 = new 类名();
new:
1.在堆内存中开辟空间
2.创建对象
对象名: 对象名接收的是对象在堆内存中的地址值 -> 引用
对象创建完毕,对象可以调变量 可以调方法 --> 调: .
调对象属性/方法
格式:
对象.属性名 -> 访问属性
对象.属性名 = 值; -> 给对象的属性赋值
//每个对象都有自己的一套属性
对象.方法名(实际参数) -> 调用对象的行为 (如何调用:由方法的返回值类型决定)
//对象.方法是为了告知是谁在做这个
成员变量和局部变量的区别
1.在类中的位置不同
2.作用域不同
3.在内存中的位置不同
4.默认初始化值不同
5.生命周期不同
因为在类中的位置不同导致 在内存中的位置不同 和 作用域不同
因为在在内存中的位置不同 导致在默认初始化值不同 和 生命周期不同
变量访问遵循就近原则
范围大小
远 --> 近
父类中的变量 > 本类成员位置 > 局部位置
this
1.调用本对象中的成员变量(属性)和方法
2.当方法中形参名和下面定义的局部变量名相同时使用
3.当构造方法中的 形参名和下面定义的局部变量名相同时使用
格式:
this.属性
哪个对象调用 就是哪个对象的属性
private
权限修饰符:pravate < 缺省 < protected < public
private 只能修饰 属性(成员变量) 和方法
private 修饰的 只能在本类内使用
public 修饰的 能在同一个模块内使用
不同包内就得导包 ---> import
java.lang.下的常用类可以不用导包 列如:System类 String类 Math数学工具类
getter and setter 方法
快捷键:
Alt + Fn + insert
构造方法
格式:
权限修饰符 方法名(形参列表){
方法体;
}
作用:构建创造对象的方式
对象的创建
类 对象 = new 类(形参列表);
new:
1.创建对象
2.在堆内开辟空间
3.调用了构造方法
调用构造方法-->就是在创建对象
注意 :
1.定义一个类 jvm会默认送一个空参构造器
2.当自己定义了构造器的话 jvm就不会送构造器了
3.javabean里面一般定义一个无参的 和一个全参的构造器
4.构造器也可以重载
5.构造器里面可以调用构造器
this(形参列表);的方式调用本类中其它的构造器