一、面向对象
目前主流的编程思想有:面向过程和面向对象。
面向过程的思想是将完成一件任务所需要的全部流程逐个列出,强调的是功能行为和过程;面向对象是利用“对象”这个东西来完成整个任务,就是将功能封装进对象,强调 的是具备了功能的对象。
举一个现实中的例子。比如我有一部二手的“绿源”电动车,偶尔会问题,需要维修。第一个方法就是我自己找来一些工具,锤子、螺丝刀、万用电表之类,“自己动手、丰衣足食”,维修这部电动车。我也可以去修车店,找个修理工,利用他的各种维修功能来维修电动车,例如修理工.检查电路、修理工.补胎等。第一种方法的思路就是“面向过程”,第二种方法的思路就是“面向对象”。通过对比发现,面向对象更加简单易学。程序员从执行者变成了指挥者。
原来的你不知道怎么修理电动车,你要自己学习,才能修好,有了面向对象思想呢,你就可以不用学习,直接调用别人的方法。你只要发出一条指令便可以。
面向过程是面向对象的基础,在面向对象的方法中,依然有过程,但这些过程是通过对象自身具备的各种方法来完成的。我需要知道完成任务需要哪些对象,然后把这些对象组织起来,利用他们自身具备的各种方法完成任务即可。开发工作首先就是找到合适的对象,本质是找对象使用;没有对象就创建对象。大致的流程是:找对象——>建对象——>使用对象——>维护对象间的关系。
万物皆对象。
面向对象的3大特征:定义对象就要体现出这些特征。
1.封装(多个功能)
2.继承
3.多态
二、名词提炼法
人开门:
人{
开门(门){
门.开门();
}
}
门{
开门(){
操作门轴。
}
}
三、映射到java中,描述就是class定义的类
(1)、具体对象就是java在对内存中使用new建立实体。
(2)、类就是现实生活正事物的描述
(3)、对象就是这类事物,实实在在的个体
(4)、描述事物就是在描述事物的的属性和行为
(5)、属性对应类中的变量,行为对应的类中的函数(方法)
(6)、其实定义类,就是在描述食物,就是在定义属性和行为,属性和行为,属性和行为,共同成为类中的成员(成员变量,成员方法)
四、使用对象
(1)、使用 new 操作符来建立对象
(2)、对象.变量 对象.方法()
class Car{
private String color = "red";
private int num = 0;
public void run(){
System.out.pringln("color = "+color+" ; num = "+num);
}
}
class CarDemo{
public static void main(String[] args){
Car c = new Car();
c.color = "blue";
c.run();
}
}
五、成员变量,局部变量
(1)、作用范围:成员变量作用于整个类中,局部变量作用于函数中,或者语句中
(2)、在内存中的位置:成员变量在堆内存中,因为对象的存在,才在内存中存在。局部变量存在于栈内存中
六、匿名对象
匿名对象是对象的简化形式,
匿名对象两种使用情况
当对对象方法仅进行一次调用的时候
匿名对象可以作为实际参数进行传递
class Car{七、封装概述
private num;
void run(){
System.out.print("run");
}
public static void show(Car c){
System.out.print("run");
}
public static void main(String[] args){
new Car().run; //使用匿名对象
show(new Car());
}
}
1、封装:是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式
2、好处
(1)、将变化隔离
(2)、便于使用
(3)、提高重用行
(4)、提高安全性
3、封装原则
(1)、将不需要对外提供的内容都隐藏起来
(2)、把属性都隐藏,提供公共方法对其访问
八、private 封装
(1)、private 关键字
是一个权限修饰符
用于修饰成员(成员变量和成员函数)
被私有化的成员只在本类中有效
(2)、常用之一
将成员变变量私有化,对外提供对应的set,get方法对其进行访问,提高对数据访问的安全性
之所以对外提供访问方式,就是因为可以在访问方式中加入逻辑判断等语句
对访问的数据进行操作,提高代码的健壮性
九、对象调用成员变量
对象名.成员变量
十、构造函数
(1)、特点
1、函数名与类名相同
2、不用定义返回值类型
3、不可以写return 语句
(2)作用:给对象进行初始化
(3)、主意
1、默认构造函数的特点
2、多个构造函数适宜重载的形式存在的
(4)、对象一建立就会调用与之对应的构造函数
(5)、当一个类中没有定义构造函数时,那么系统会默认给该类加入一个默认的空参数的构造函数
(6)、当在类中定义了用户的构造函数,则默认的构造函数将不存在
(7)、构造函数与一般方法的区别
构造函数在对象建立时执行,只有一次
一般方法时,只要调用就会执行
(8)、什么时候定义构造函数呢:当分析事物时,该事物存在剧本一些特性或者行为,那么将这些内容定义在构造函数中
十一、构造代码块
(1)作用:给对象进行初始化,对象一建立,就运行,而且优先于构造函数执行。
(2)、和构造函数区别
构造代码快是给所有对象进行统一初始化
而构造函数是给对应的对象初始化
(4)、格式
{ }
(3)、
class Car{十二、this关键字:区*部变量和成员变量
private num;
{
System.out.print("run");
}
void run(){
System.out.print("run");
}
public static void show(Car c){
System.out.print("run");
}
public static void main(String[] args){
new Car().run; //使用匿名对象
show(new Car());
}
}
(1)、this 代表本来的对象,代表它所在函数对象的引用。简单说哪个对象在调用 this 所在的函数,this就代表哪个对象
(2)、是用于区*部变量和成员变量同名的情况
十三、this 关键字 应用
class Demo{十四、this关键字在构造函数间调用
privat int age = 0;
Demo(int age){
this.age = age;
}
void compare(Demo d){
return this.age==d.age; //this 为调用该函数的对象的引用,的为传过来的对象
}
public static void main(){
Demo d = new Demo(20);
Demo d2 = new Demo(21);
d.compare(d2);
}
}
(1)、this 构造函数,只能放在构造函数的第一行,否则会报错,因为初始化要先执行
class Demo{
privat int age = 0;
privat String name = 0;
Demo(int age){
this.age = age;
}
Demo(String name,int age){
this.name = name; //这两个是一个,this 就相当于 对象(数据)
this(age); //
this.age = age;
}
public static void main(){
Demo d = new Demo(20);
Demo d2 = new Demo("zhangshuai",21);
}
}