面向对象(Object Oriented)简称OO,是软件设计中的一种思想(思维模式)。
面向对象编程(Object Oriented Programming),简称OOP。
要理解OO,就要先理解对象和类的概念。
对象由两部分组成:静态的特征、 动态的行为。
静态的特征-->属性 每个对象的每个属性都拥有特定值。
动态的行为-->方法 一般一个行为用一个方法来实现。
(小结)-->对象由两部分组成:属性、方法。
java使用clsss来定义类:(java的类的{}最后面没有“;”作为结尾,这个和C++不同)
格式:
class 类名{//此处类名不能使用Java关键字 不能用包含空格或“.”等特殊符号,可以使用汉字(不
推荐),推荐首字母大写,首字符可以是字母、“_”或“$”,不能是数字开头。
//定义属性部分
属性1的类型 属性1;
属性2的类型 属性2;
...
属性3的类型 属性3;
//定义方法部分
方法1;
方法2;
...
方法3;
}
一个类中的属性的作用范围就是这个类中 从“{”到“}”中的任何位置都作用到。
当我们定义好了一个类之后, 这个类也就是一种数据类型了,可以像int a; double b;等等这样来使
用。
我们自己定义出来的类型都是引用类型 ,所以直接 “类型 对象;”这样之后还不能使用 这时只是
在栈里面开辟了空间 在堆里面还没有开辟空间 所以还需要“对象 = new 类型名();”
一个java文件里面可以定义多个类
最规范的写法是 一个java文件中写一个类 然后类名和java文件名相同
假设自己定义了一个Student类
然后写了一句Student student = new Student();
//这句话等号前面的是在栈中 等号后面的则是在堆中
想要调用方法的时候必须先要创建对象,通过对象来调用方法。
引用型的数据类型一定要new。!
一个java文件里面可以写多个class 但是如果其中有一个类里面包含main方法 那么这个文件名字就
要换成 包含main方法的类的名字
先有类后有对象 调用属性和方法的时候要先有对象
成员变量(非静态):存储在堆内存中,随着对象的存在而存在。当对象编程垃圾被回收时, 该对象
中的成员变量会消失。也就是说没有对象就没有属性
(方法中的)局部变量:存储在栈内存中,当方法被调用,或者语句被执行的时候,才存在。
成员变量:在堆内存中有默认初始化值。//如果是int型属性 它的默认初始化值一定是0
局部变量:必须手动初始化后,才可以被使用。
在类的内部调用:
在同一个类的内部 方法可以直接通过方法名调用这个类中的其他方法
在类的外部调用:
在类的外部调用一个类中的方法 一定要先定义这个类的对象 通过对象来调用这个类中的方法
面向过程是一种以过程为中心的编程思想,他们不支持面向对象“三大特性”(封装、继承、多态)。
面向过程就是分析出解决问题所需要的步骤,然后用方法把这些步骤一步一步实现,使用的时候一个一
个一次调用就可以了。
PO指的是面向过程 OO指的是面向对象
举个例子“把大象放进冰箱”
PO:
1.打开冰箱门
2.把大象放进去
3.关上冰箱门
OO:
1.没有冰箱先定义冰箱
2.没有大象先定义大象
3.没有人先定义人
4.定义开门行为
5.定义放大象行为
6.定义关门行为
//OO思想更加贴近现实生活
面向对象的三大特征之一:封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过
该类提供的方法来实现对隐藏信息的操作和访问;
封装的好处:
1.隐藏类的实现细节
2.只能通过规定方法访问数据
3.方便加入控制语句
4.方便修改实现
private修饰符使一个访问权限修饰符
用于修饰类中成员(属性和方法)
被私有化的成员只在本类中有效访问
当成员私有后,提高了安全性,但是访问权限降低了。这时可以通过getter/setter方法间接对其进行访问。
好处是:可以在方法中对成员变量进行控制。
类的构造函数:
在自定义的一个类中,
如果自己写了带参的构造函数, 那么最好再写一个 不带参的构造函数,因为只要我们写了构造函数
,那么java就不会再自动加一个无参构造方法
如果不自己写构造函数 那么Java会自动加一个无参构造方法
构造方法是给对象初始化的
构造方法在对象创建时被执行,自动调用
语法上,构造方法是不需要有返回类型的,包括void,且构造方法名跟类名一样
构造方法极少私有化 大多数情况下都是公有化
而普通方法私有化则是很常见的
一般一个标准的类中,需要包含以下内容:
1.若干个私有化的属性;
2.若干个无参和有参的构造方法;
3.若干个getter/setter方法;
4.功能方法
书写顺序无要求,不过最好的顺序就是上面这个编号的顺序
初始化对象属性的方式有以下三种:
1.构造方法
2.setter方法
3.在类中声明属性时直接赋值(不建议使用)
对象在调用方法或者属性时要用.操作符
当构造函数中参数的名字和属性中的名字一样是, 可以用this表示当前对象,
一般为了保持可读性,都会是构造函数中的参数名和属性名一致。
在方法中, 可以使用this关键字引用成员方法, 一般很少这样做,默认就有。
!!!注意:如果我们想要在一个构造方法中对另一个构造方法进行调用的时候,不能在其构造方法中
直接类名(参数)这样调用,而是通过this调用另一个构造方法,用法是this(参数列表),这个只能
用在类的构造方法中,别的地方不能这么用。
匿名对象:是对象的简化形式,是没有名字的对象(只要是简化形式就有一定局限性)
匿名对象由于没有名字,所以一般用于那种只需要调用以此方法的场景(传参)
new Car().run(); (调用情况:当需要调用一个对象的某个方法,且只需要调用一次)
几种基本数据类型:int、 douable、 char、 boolean、
几种引用数据类型:String、 数组、 自定义的类、
面向对象编程(Object Oriented Programming),简称OOP。
要理解OO,就要先理解对象和类的概念。
对象由两部分组成:静态的特征、 动态的行为。
静态的特征-->属性 每个对象的每个属性都拥有特定值。
动态的行为-->方法 一般一个行为用一个方法来实现。
(小结)-->对象由两部分组成:属性、方法。
java使用clsss来定义类:(java的类的{}最后面没有“;”作为结尾,这个和C++不同)
格式:
class 类名{//此处类名不能使用Java关键字 不能用包含空格或“.”等特殊符号,可以使用汉字(不
推荐),推荐首字母大写,首字符可以是字母、“_”或“$”,不能是数字开头。
//定义属性部分
属性1的类型 属性1;
属性2的类型 属性2;
...
属性3的类型 属性3;
//定义方法部分
方法1;
方法2;
...
方法3;
}
一个类中的属性的作用范围就是这个类中 从“{”到“}”中的任何位置都作用到。
当我们定义好了一个类之后, 这个类也就是一种数据类型了,可以像int a; double b;等等这样来使
用。
我们自己定义出来的类型都是引用类型 ,所以直接 “类型 对象;”这样之后还不能使用 这时只是
在栈里面开辟了空间 在堆里面还没有开辟空间 所以还需要“对象 = new 类型名();”
一个java文件里面可以定义多个类
最规范的写法是 一个java文件中写一个类 然后类名和java文件名相同
假设自己定义了一个Student类
然后写了一句Student student = new Student();
//这句话等号前面的是在栈中 等号后面的则是在堆中
想要调用方法的时候必须先要创建对象,通过对象来调用方法。
引用型的数据类型一定要new。!
一个java文件里面可以写多个class 但是如果其中有一个类里面包含main方法 那么这个文件名字就
要换成 包含main方法的类的名字
先有类后有对象 调用属性和方法的时候要先有对象
成员变量(非静态):存储在堆内存中,随着对象的存在而存在。当对象编程垃圾被回收时, 该对象
中的成员变量会消失。也就是说没有对象就没有属性
(方法中的)局部变量:存储在栈内存中,当方法被调用,或者语句被执行的时候,才存在。
成员变量:在堆内存中有默认初始化值。//如果是int型属性 它的默认初始化值一定是0
局部变量:必须手动初始化后,才可以被使用。
在类的内部调用:
在同一个类的内部 方法可以直接通过方法名调用这个类中的其他方法
在类的外部调用:
在类的外部调用一个类中的方法 一定要先定义这个类的对象 通过对象来调用这个类中的方法
面向过程是一种以过程为中心的编程思想,他们不支持面向对象“三大特性”(封装、继承、多态)。
面向过程就是分析出解决问题所需要的步骤,然后用方法把这些步骤一步一步实现,使用的时候一个一
个一次调用就可以了。
PO指的是面向过程 OO指的是面向对象
举个例子“把大象放进冰箱”
PO:
1.打开冰箱门
2.把大象放进去
3.关上冰箱门
OO:
1.没有冰箱先定义冰箱
2.没有大象先定义大象
3.没有人先定义人
4.定义开门行为
5.定义放大象行为
6.定义关门行为
//OO思想更加贴近现实生活
面向对象的三大特征之一:封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过
该类提供的方法来实现对隐藏信息的操作和访问;
封装的好处:
1.隐藏类的实现细节
2.只能通过规定方法访问数据
3.方便加入控制语句
4.方便修改实现
private修饰符使一个访问权限修饰符
用于修饰类中成员(属性和方法)
被私有化的成员只在本类中有效访问
当成员私有后,提高了安全性,但是访问权限降低了。这时可以通过getter/setter方法间接对其进行访问。
好处是:可以在方法中对成员变量进行控制。
类的构造函数:
在自定义的一个类中,
如果自己写了带参的构造函数, 那么最好再写一个 不带参的构造函数,因为只要我们写了构造函数
,那么java就不会再自动加一个无参构造方法
如果不自己写构造函数 那么Java会自动加一个无参构造方法
构造方法是给对象初始化的
构造方法在对象创建时被执行,自动调用
语法上,构造方法是不需要有返回类型的,包括void,且构造方法名跟类名一样
构造方法极少私有化 大多数情况下都是公有化
而普通方法私有化则是很常见的
一般一个标准的类中,需要包含以下内容:
1.若干个私有化的属性;
2.若干个无参和有参的构造方法;
3.若干个getter/setter方法;
4.功能方法
书写顺序无要求,不过最好的顺序就是上面这个编号的顺序
初始化对象属性的方式有以下三种:
1.构造方法
2.setter方法
3.在类中声明属性时直接赋值(不建议使用)
对象在调用方法或者属性时要用.操作符
当构造函数中参数的名字和属性中的名字一样是, 可以用this表示当前对象,
一般为了保持可读性,都会是构造函数中的参数名和属性名一致。
在方法中, 可以使用this关键字引用成员方法, 一般很少这样做,默认就有。
!!!注意:如果我们想要在一个构造方法中对另一个构造方法进行调用的时候,不能在其构造方法中
直接类名(参数)这样调用,而是通过this调用另一个构造方法,用法是this(参数列表),这个只能
用在类的构造方法中,别的地方不能这么用。
匿名对象:是对象的简化形式,是没有名字的对象(只要是简化形式就有一定局限性)
匿名对象由于没有名字,所以一般用于那种只需要调用以此方法的场景(传参)
new Car().run(); (调用情况:当需要调用一个对象的某个方法,且只需要调用一次)
几种基本数据类型:int、 douable、 char、 boolean、
几种引用数据类型:String、 数组、 自定义的类、