---------------------- android培训、java培训、期待与您交流! ----------------------
面向对象
面向对象概念:
面向对象是相对面向过程而言的的
面向对象和面向过程都是思想
面向过程:强调的是功能和行为
面向对象::将功能封装劲对象,强调具备了某种功能的对象
面向对象是基于面向过程的
面向对象的特点:
是一种符合人们思考习惯的思想,对象是被支配的人事物。
可以将复杂的事情简单化。
将程序员从执行者转化为指挥者。
完成需求时:
1.首先要具有所需的功能的对象来用。
2.如果该对象不存在,那么创建一个具有所需功能的对象。
3.这样简化开发并提高复用。
面向对象开发,设计,特征。
开发的过程:其实就是不断的创建对象,使用对象,只会对象做事情。
设计的过程:其实就是在管理和维护对象之间的关系。
面向对象的特点:
1.封装(encapsulation)
2.继承(inheritance)
3.多态(polymorphism)
类与对象的关系。
使用计算机语言就是在不断的描述现实生活中的事物,java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。
类就是对现实生活中事物的描述。
对象即是该类事物实实在在存在的个体。
映射到java中:
描述就是class定义的类
具体对象就是对应java在对内存中的实体。用new建立在对内存中。
类的定义
如果要分析一共有几个对象的时候,使用名次提炼法。
生活中描述事物无非就是描述事物的属性和行为。
java中用类class来描述事物也是如此
属性:对应类中的成员变量
行为:对应类中的成员函数
定义类其实就是定义类中的成员(成员变量和成员函数
成员变量和局部变量的区别??
成员变量:
1.定义在类中,在整个类中都可以被访问。
2.随着对象的建立而建立,存在与对象所在的堆内存中。
3.成员变量有默认初始化。
局部变量:
1.局部变量只定义在局部范围内,如:函数内。语句内等。
2.存在于栈内存中。
3.所作用的范围结束,变量空间会自动释放。
4.局部变量没有默认初始化。
匿名对象:new Demo().run()即是一个匿名对象。就是对象不带有名字
匿名对象是对象的简化形式
匿名对象两种使用情况:
1.当对对象方法仅进行一次调用的时候,对成员变量使用无意义。
2.匿名对象可以作为实际参数进行传递。
封装(encapsulation)
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:将变化隔离,便于使用,提高重用性,提高安全性。
封装原则:1.将不需要对外提供的内容都隐藏起来。
2.把属性都隐藏,提供公共方法对其访问。
private(私有)关键字
是一个权限修饰符,用于修饰类中成员,被私有的成员只在本类中有效。
常用之一:
将成员变量私有话,对外提供对应的set和get方法对其进行访问,提高数据访问的安全性。
一个成员变量对应两种访问方式,
1,设置变量
2,获取变量
之所以对外提供访问方式 就是因为可以在访问的时候加入一些逻辑判断等语句。对访问的数据进行操作,提高了代码的健壮性。
设置变量:setXXX() 有形参,无返回值。
获取变量:getXXX() 无形参,有返回值。
注意,封装不是私有,私有仅仅是封装的一种表现形式。
构造函数:
特点:
1.函数名与类名相同
2.不用定义返回值
3.不可以写return语句
作用:给对象进行初始化
注意:
1.默认构造函数的特点
2.多个构造函数是已重载的形式存在的。
在对象一建立就调用与之对应的构造方法。
小细节:
当一个类中没有定义构造函数时,那么系统会默认给类加一个空参数的构造函数。
当在类中定义了任意一种参数的构造函数,那么系统就不会给自动添加空参数构造函数。
构造函数与一般函数的区别:
1.构造函数和一般函数和写法上不同
2.构造函数是在对象已建立就执行,给对象初始化,一般函数是对象调用才执行,是给对象添加对象具备的功能。
3.一个对象建立构造函数只运行一次,一般函数可以被该对象调用多次。
分析事物时,但事物村子啊就具备一些特性或者行为,那么将这些内容定义到构造函数中。
构造代码块:用单独的花括号表示。 { sop("run"); }
作用 :给队形进行初始化
特点:对象已建立就运行,优先于构造函数
构造函数和构造代码块的区别:
构造代码块是给所有对象统一初始化的,
构造函数是给对应的对象初始化的。
this关键字
作用:用于区分局部变量和成员变量重名的情况。
用法有:
this.name=name;
this(name);
特点:this代表的其所在函数所属对象的引用。换言之。this代表本类对象的引用。
什么时候使用this关键字呢??
当在函数内需要用到调用该函数的对象的时候,就用this表示该对象。
但凡本类功能使用了本类对象,都使用this表示。
用于构造函数之间相互调用只能用this(name),即this后加括号。可以用于同一个类中构造函数重载的情况。
注意:
this语句只能定义在构造函数的第一行,因为初始化要先执行。
static(静态)关键字
用法:是一个修饰符,用于修饰成员,
当成员北京台修饰后,除了可以被对象调用以外还可以直接被类名调用。
被修饰的成员具有以下特点:
1.随着类的加载而加载。
2.优先与对象存在。
3.被所有对象所共享一个数据。即多个对象公用一块内存空间。节省内存空间。
4.可以直接用类名调用。类名.静态成员。
使用时注意:
静态方法只能访问静态成员,因为非静态成员还不存在。
静态方法中不可以写this和super关键字,因为静态优先于对象存在。
主函数是静态的。
什么时候使用静态?
要从两方面入手,因为静态修饰的成员变量和成员函数
什么时候定义静态变量呢?
当对象中出现共享数据时,该数据被静态所修饰。
对象中的特有数据要定义成非静态存在与堆内存中。
什么时候定义静态函数呢?
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义为静态的。
静态的应用:每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用。
静态工具类:
1.该类中方法不调用类中非静态成员,
2.将对外提供的方法都进行静态
3.将不需要对外提供的方法进行私有话
4.将构造函数进行私有化,防止用户建立对象。
静态的有点和缺点:
静态的有点:对对象的共享数据进行单独存储,节省空间。没有必要每个对象都存储一份。
静态的缺点:生命周期长,访问有局限性(只能访问静态成员)。
实例变量和类变量的区别:
1.存放位置;类变量存在随着类的加载而存在与方法区中。
实例变量随着对象的建立而存在与堆内存中
2.生命周期:类变量声明周期长。随着类的消失而消失。
实例变量生命周期随着对象的消失而消失。
new建立的类是一个类类型变量指向实体,即指向对内存中的地址值。
方法区:共享区,数据区。
存放的是类中 的方法和类中的数据
主函数:是一个特殊的函数,作为程序的入口,可以被jvm调用。
主函数的定义:
1.public代表这该函数访问权限是最大的。
2.static==代表主函数随着类的加载就已经存在了。
3.void==主函数没有具体的返回值
4.main==main不是关键字,但是是一个特殊的单词,可以被jvm识别。
(String[] args) ==函数的参数,参数的类型是一个数组,该数组中的元素是字符串,字符串类型的数组。
注意:main函数格式不可以改变,只有String[] 的参数名可以改变。只有固定格式jvm才能够识别。
jvm在调用主函数的时候,传入的是一个new String[0];
那么我们可以通过java 的命令向jvm中传入一个字符串类型的参数。
那么main函数可以对我们传入的字符串进行操作。
类的说明书
类的说明书 /** 这是一个对数组进行操作的工具类,该类中提供了获取最值,排序等功能。 @author 张三 @version v1.1 */ /** 获取一个整形数组中的最大值, @param arr接收一个Int类型的数组----@param表示接收的参数,如果多个参数可以写多个@param。 @return 会返回一个该书组中的最大值。 */ 使用javacod命令进行编译 javadoc -d myhelp -author -version Demo.java 命令 目录 文件名 作者 版本 源文件
使用javacod命令进行编译
javadoc -d myhelp -author -version Demo.java
命令 目录 文件名 作者 版本 源文件
注意:需要生成doc文件的java类必须是public修饰的,否则会编译失败。
只有public或者太可她修饰的方法才能够出现在帮助文档里面。
一个类中默认会有一个空参数的构造函数,这个默认的构造函数的权限和所属类一致,
即默认构造函数的权限是随着类的变化而变化的。
静态代码块
格式: static{ 静态代码块中的执行语句 }
特点:随着类的加载而执行,只执行一次,并且优先于main函数执行。
作用 :用于给类初始化。
初始化顺序:
1.static代码块初始化-----对类初始化,不能使用this语句
2.默认初始化
3.显式初始化
4.构造代码块初始化-----给对象初始化,可以使用this语句
5.构造函数初始化-----构造函数给对应对象初始化的
Person p = new Person("zhangsan",20);在内存中都做了什么呢?
该句话都做了什么事情?
1,因为new用到了Person.class.所以会先找到Person.class文件并加载到内存中。
2,执行该类中的static代码块,如果有的话,给Person.class类进行初始化。
3,在堆内存中开辟空间,分配内存地址。
4,在堆内存中建立对象的特有属性。并进行默认初始化。
5,对属性进行显示初始化。
6,对对象进行构造代码块初始化。
7,对对象进行对应的构造函数初始化。
8,将内存地址付给栈内存中的p变量。
---------------------- android培训、java培训、期待与您交流! ----------------------
相关推荐
黑马程序员 - Java基础教学 - 05 - 面向对象(1).doc
黑马程序员 - Java基础教学 - 08 - 面向对象(4)-多态.doc
黑马程序员 - Java基础教学 - 06 - 面向对象(2) - 关于静态static的那些事.doc
黑马程序员_毕向东_Java基础视频教程第05天-01-面向对象(概述).avi
1、 面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。 2、 JRE(Java Runtime Environment,Java 运行时环境),它相当于操作系统部分,提供了 Java 程序运 行时所需要的基本条件和许多 Java ...
传智播客_Java培训_毕向东_Java基础[03-面向对象]系黑马程序员_毕向东_Java基础视频教程
Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。
观看黑马程序员Java零基础视频教学,从60P方法开始总结的知识集合,请使用Xmind打开,如果需要学习请配合视频打开:https://www.bilibili.com/video/BV17F411T7Ao
C++机房预约系统:面向对象,文件操作,黑马程序员,部分优化,模板
含面向对象,异常处理和常用类,线程技术,集合框架,IO操作,网络编程,文件操作,反射机制,
1、面向对象都有哪些特性以及你对这些特性的理解12 1、 Java 中实现多态的机制是什么 1、 Java 中异常分为哪些种类13 2、 调用下面的方法,得到的
编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 Java是SUN(Stanford University Network,斯坦福大学网络...是简单易学,完全面向对象,安全可靠,与平台无关的编程语言
在下载和比较了大量同类书籍后不得不承认孙卫琴老师的这本书循序渐进由浅入深是最好的Java入门教程,同时它的...本资源包含《Java面向对象编程》的电子书,实例源代码,课后题答案等可以说是当前该书最全的资源了。。。
(1)aop:面向切面编程,扩展功能不是修改源代码实现 (2)ioc:控制反转, - 比如有一个类,在类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象,使用对象调用方法,创建类对象的过程,需要new...
C++面向对象——B站黑马程序员视频学习笔记。
linux编程,ppt文档,gdb,makefile,linux编程概述
第1章 Java开发入门一.填空题1. 面向对象,SUN 2. JavaSE,JavaEE,JavaME3.面向对象、跨平台性、支持多线程4. JDK5.bin
《JavaScript前端开发案例教程》是面向计算机相关专业的一门Web前端基础课程,涉及JavaScript语言基础、数组、函数、对象、BOM、DOM、事件、正则表达式、Ajax、jQuery等内容。
由黑马程序员职工管理系统改编,内含5个头文件和5个源文件,可实现学生,老师,院长三级成员的增删改查操作。
精选12种与多线程和并发处理相关的设计模式 264张图表 + 300段Java示例程序 = 轻松学习多线程编程 日本经典多线程入门书,原版长销11年! 本书适合以下读者阅读 a....b....c....对面向对象开发感兴趣的人