Java基础---面向对象

一、面向对象的理解

面向对象是Java语言区别于c语言的一个重要特点,c语言是一中面向过程的思想,而面向对象也就是相对于面向过程来说的,面向过程强调的是功能行为,面向对象强调具有功能的对象。
面向对象特点:
1、是一种符合人们思考习惯的思想。
2、可以将复杂的事情简单化。
3、将程序员从执行者转换成了指挥者
4、完成需求步骤:
  a)首先找具有所需功能的对象。
 b)如果不存在这样的对象,那么就创建一个具有所需功能的对象。
 c)这样能简化开发并且提高程序的复用性。
简单来说Java的开发过程就是不段的创建对象,使用对象,指挥对象完成所需功能,创建新对象,管理和维护已存在的对象,和处理对象之间的关系。
面向对象有封装、继承、多态三个特征。

二、类和对象

1、类和对象之间的关系
类的定义:使用计算机语言就是为了不断描述现实中的事物,而Java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。
生活中描述事物无非就是描述事物的属性和行为,如人的年龄、身高、跑步、讲话等。而Java描述一个人的话。就用一个类来表示。人的年龄身高等属性就用java中的变量来描述,人的行为如跑步就用java中的方法来描述。
对象就是一类事物中实实在在存在的一个个体。

上图中就定义了一个以人为对象的类,类中包含年龄属性,以及说话的功能。
而主函数中p就是类的一个具体对象,
可以通过p.属性或者方法的形式对对象进行操作。
2、成员变量和局部变量
简单来说成员变量就是定义在类中的变量。局部变量就是定义在方法或者语句中的变量。
区别:
作用范围和内存分配不一样:成员变量在整个类中都可以访问,随着对象的建立而建立存放在堆内存中,有默认的初始值。
    局部变量存在于栈内存中作用范围结束变量会被释放,并且没有默认初始值。
3、匿名对象
匿名对象是对象的简化形式。
具体来说有两种使用情况:1、当对对象方法仅进行一次调用时。2、匿名对象可以作为实际参数进行传递。
例 new Person();

三、对象的封装

什么是封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
封装的好处:将变化隔离,简化使用,提高复用性,安全
封装的原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共的访问方法。
封装的表现形式之一:private 关键字-权限修饰符,用于修饰类中的成员,私有只在本类中有效。
常用形式:如上图,将Person类中的年龄属性,私有化,对外提供共有的get、set方法对其访问,提高了数据访问的安全性。

四、构造函数

特点:函数名与类名相同,不用定义返回值类型,不可以写return语句。当函数中没有定义构造函数时,系统会给该类加一个默认的参数为空的构造函数,如果自定义了构造函数, 默认的构造函数就没有了。
作用:给对象进行初始化。构造函数式在对象一建立,就给对象初始化,一般函数是对象调用才执行,一个对象建立构造函数只运行一次,而一般函数可以调用多次。
构造函数的使用:分析事物时,该事物存在就具备一些特性或者行为,那么将这些内容定义在构造函数内。
构造代码块:也是给对象进行初始化,对象一建立就运行,而且优先于构造函数。
构造代码块和构造函数的区别:格式上不一样。构造代码块:{}。构造代码块中定义的是不同对象共性的初始化内容。
                                                         构造代码块是给所有对象进行初始化,构造函数是给对应的对象初始化。

五、this关键字

先看小程序


当定义类中的功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。
只要本类功能内部用到本类对象都用this来表示这个对象。
this语句:
用于构造函数之间进行互相调用。
注:this语句只能定义在构造函数的第一行,因为初始化要先执行,一般函数不能直接调用构造函数,因为this语句不能在一般函数中,只能用在构造函数。
总结:用法一:用于区分同名变量的情况,也就是区分同名成员变量和局部变量的时候。二:用于构造函数之间调用。

六、static(静态)关键字

  static是一个修饰符,用于修饰类中的成员。当成员被静态修饰以后,就多了一个调用方式,除了可以被对象调用以外,还可以直接被类名调用。格式:类名.静态成员。
特点:随着类的加载而加载,也就是说随着类的消失而消失,生命周期长。优先于对象存在,也就是说先存在静态,在存在对象。被所有对象所共享。可以直接被类名所调用。
静态变量也叫类变量。非静态变量也叫实例变量,二者的区别:类变量随着类的加载而存在于方法区中,实例变量随着对象的建立存在于堆内存中。
静态的利与弊:利-对不同对象的共享数据进行单独空间的存放,节省空间,可以被类名直接调用。
                            敝-生命周期过长,访问出现局限性。静态虽好只能访问静态。
什么时候用静态:当对象中出现共享数据时,该数据被静态所修饰,当函数功能内部没有访问到非静态数据,那么该功能可以定义成静态的。
注:静态方法只能访问静态成员,非静态方法既可以访问静态成员也可以访问非静态成员。
静态方法中不可以定义this等关键字,因为静态优先于对象而存在。
主函数是静态的。
静态代码块:
格式:static{ 静态代码块中的语句 }
特点:随着类的加载而执行,执行一次,并优先于主函数,用于给类进行初始化。
对象的初始化过程:
1、把类名.class文件加载到内存中。
2、执行该类中的static代码块,如果有的话,给该类进行初始化。
3、在堆内存中开辟空间,分配内存地址给对象。
4、在堆内存中建立对象的特有属性,并进行默认初始化。
5、对属性进行显示初始化。
6、对对象进行构造代码块初始化。
7、对对象进行对应构造函数初始化。
8、将内存地址赋给栈内存中的对象变量。
静态的应用——文档说明书。
   每个应用程序中都共性的功能,可以将这些功能进行抽取,独立封装,以便复用。
下边以数组工具类为例,制作一个文档说明书。
程序:



在dos命令行中输入命令:javadoc -d Myhelp -author -version ArrayTool.java
Java中的doc工具就会帮我们完成说明文档的API制作。
这个就是属于我们自己的API了。

知识拓展:
主函数:
主函数是一个特殊的函数,作为程序的入口,可以被JVM调用。
主函数的定义:
public:代表着该函数的访问权限是最大的。
static:代表主函数随着类的加载就已经存在。
void: 主函数没有具体的返回值。
main:不是关键字,但是是一个特殊的单词,可以被JVM识别。
                (String [] args): 函数的参数,参数类型是一个数组,该数组中的元素是字符串,字符串类型的数组。
  args: arguments参数,唯一可以改写的地方,
主函数是固定格式呗JVM识别。

七、单例设计模式

设计模式的概念:解决某一问题最行之有效的方法。java中共有23中设计模式。
单例设计模式的作用:使一个类在内存中只存在一个对象。
程序:

单例设计模式有两种写法:



























                                                         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值