---面向对象的概念---
1.面向过程与面向对象的区别
面向过程:是一种思维习惯,解决一个问题的时候靠的是一个个方法调用--核心是动作
面向对象:是一种更接近生活中解决问题的思维习惯,解决特定的问题靠对象完成--核心是对象
eg:对于把大象装进冰箱分析
面向过程思维习惯
打开冰箱--装入冰箱--关闭冰箱(由3个动作实现)
面向对象的思维习惯
分析问题涉及的对象:大象 冰箱(打开 存储 关闭)
冰箱打开--冰箱存储大象--冰箱关闭
2.面向对象的特点
封装数据和方法在对象中
使得复杂问题简单化(面向多个函数--面向一个对象)
角色的转换:自己实现功能--调用对象的功能
注意:以后再给别人解释的时候先说特点,然后进行举例说明
3.面向对象解决问题的一般思路
--分析问题域涉及到哪些对象---名词一般就是可以是对象
注意:实体-现实存在的任何东西,具有属性和行为两方面内容
--分析需要的功能涉及到两方面
* 该功能已经被封装在对象中,直接调用对象功能
* 该功能没有被对象封装过,就自己创建对象封装该功能
注意:功能应该封装在合适的对象中(原则:放在最熟悉该功能的对象)
--不断维护对象之间的关系

----类与对象之间的关系----
eg;现实生活中生产汽车
某型号汽车图纸--生成具体的该型号的汽车
图纸--相当于是对汽车这类事物的描述
具体汽车--是事物描述的一个具体的产物
--Java中的类:用Java语言描述对某类事物的描述--通过类来体现
(属性-数值--成员变量,行为-功能--成员方法) 成员定义在类中
定义类本质就是--定义类
成员变量与局部变量区别
1.成员变量定义在类中,类中有效。局部变量定义在所属方法中,在方法中有效。
2.成员存在堆中对象中,局部变量存在栈中的方法中
3.成员变量随着对象存在,局部随着所属区域的存在而存在
4.成员变量默认初始化,局部变量没默认初始化值
注意:初始化是给对象的属性进行初始化
成员变量与局部变量重名:先在栈中找--再到堆中找
--Java中的对象:是某类的具体实例,通过new来创建对象
Car c = new Car();//创建一个对象
创建对象的过程:1.产出对象的引用 2.堆中创建对象(初始化-构造方法进栈) 3.对象的地址赋值给对象的引用
c.run(); c.color = "blue";//通过对象名调用对象的内容-- 对象.成员
对象.成员方法();方法就会进栈-执行完成--出栈
类一般分为:单纯的描述类 和 测试类(含有主函数,一般在该类中创建和调用对象的内容)--类的创建与类的使用分开

----面向对象的内存分配----
1.堆里面--存new出来对象(每个对象包含数据在堆中成员变量-默认初始化)
2.成员方法是该类所有对象共用,只有在调用的时候才会加载进栈内存
3.实体的出现--封装自己特有数据,
4.对象:封装某类事物的数据,数组:封装同一类型的数据
5.匿名对象:没有名字的对象 new Car(); 其实就是对象的简写方式 new Car().run();
使用地方:1.只对对象进行一次使用,比如仅仅调用一次方法,匿名对象没有被指向,调用完成员变量后就变成垃圾,所以调用一次方法就可以简写 2.传递类类型参数就可以,因为有接收匿名对象的引用。
6.简化必须有好处也会有坏处

---对象的初始化---
1.默认初始化--自动初始化
2.直接显示初始化--类创建是直接给成员变量赋值
3.静态代码块初始化--用于初始化类(不含对象)
4.构造代码块--给所有对象进行通用的初始化
5.构造方法初始化---针对性的初始化
特点:函数名和类名相同,无返回值类型,也无返回值
作用及使用时机:在创建对象的时候被调用一次,用来初始化对象的成员变量
默认初始化:一般定义类时候,没有定义构造函数,JVM会自动添加一个无参数的构造函数,若本身存构造函数就不会添加,构造函数以重载的方式定义在类中,根据参数调相应的构造函数。和一般函数一样,调用完就释放内存。
---java的参数传递---按值传递
1.参数为基本数据类型--传递的是变量的值
2.参数为引用型--传递的是指向对象的地址
3.方法调用结束后会释放其所占的栈内存
----封装-----
1.定义隐藏对象的属性和实现细节对外提供公共的访问方式
2.优点:变化隔离、便于使用、代码重用、安全
3.原则:属性一般是私有private对外提供公共的set/get方法
4.访问修饰符:private只能修饰类的成员,只能在本类中直接访问
5.类中代码的书写顺序:成员变量 构造方法 成员方法

---this关键字----
1.定义:代表所在函数所属的对象的引用---代表本类对象
简单的说就是那个对象调用了this所在的函数,this就代表那个对象
构造方法是被对象调用,加载进内存时就持有其要初始化化对象的引用this = 该对象的地址
2.何时使用:当在函数中需要用到该函数对象时就可以用this
3.使用情况:
** 局部变量和成员变量重名,this用来区分成员变量和参数 this.name = name;当对象调用成员方法时候(假如要访问的对象数据)--此时也会持有this引用
** 可以在一个构造函数中调用另一个构造函数(必须放第一行)

---static关键字---静态的
1.用来修饰成员,修饰后的成员不在属于某个对象
2.被修饰后的成员具备以下的特点:
随着类的加载而加载,先于对象的存在
被所有对象共享,可以被对象使用也可直接用类名调用

3.什么时候应该定义静态成员
静态成员变量:该类的所有对象该属性值相同 共享该属性值-static只存储一份
静态成员方法:方法有没有访问对象的特有数据--是否依赖于对象的数据
如果不依赖对象,就将功能定义为静态
共享的数据--定义为静态--静态变量--一般由类名调用
特有的数据--定义为对象特有--成员变量(实例变量)

4.成员变量与静态变量的区别
两个变量的生命周期不同。成员变量和对象是一体,静态变量和类是一体的(生命周期长)
(类在内存中也是以对象的形式存储的)
调用方式不同:成员变量只能被对象调用;静态变量一般就用类名调用
存储地方不同:成员变量堆中对象;静态变量存储在方法区
5.注意事项
静态方法只能直接访问静态成员
非静态既可以访问静态也可以访问非静态
静态方法里面不可以使用this,super等代表某个对象引用的关键字 静态是共用的
主函数是静态的-作用就是创建对象,调用对象的内容
6.main函数的解释
格式是固定
被JVM所识别
main是函数名,被JVM识别的固定名字
主函数被调用才会执行
String[]args 主函数的参数列表--字符串数组//JVM传参数new String[0]
7.static成员加载的过程
测试类加载(静态非静态分开在方法区-代码存放区)-主函数栈中--其他函数栈中(运行区存储方法的局部变量)

8.静态代码块
static{} static此时是修饰符 满足静态一切特点,随类的加载而执行
同一个类一般只会被加载一次,只执行一次,用于给类初始化
有的类可能不需要创建对象

Java基础总结--面向对象1的更多相关文章

  1. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  2. 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)

    ---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...

  3. Java基础之面向对象以及其他概念

    一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. JR ...

  4. 【Java基础】面向对象下

    面向对象下 这一章主要涉及其他关键字,包括 this.super.static.final.abstract.interface.package.import 等. static 在 Java 类中, ...

  5. 【java基础】面向对象的三大基本特征之-------继承

    面向对象的三大特征:封装,继承,多态 java通过extends关键字来实现继承,而且是单继承,一个子类只可以有一个直接父类,但是父类还可以有父类... java.long.Object是所有类的父类 ...

  6. 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类

    ---------- android培训.java培训.期待与您交流! ---------- 一.面向对象概述 1.面向对象:是一个很抽象的概念,它相对面向过程而言,是一种程序设计的思想. 2.面向对 ...

  7. 再探java基础——对面向对象的理解(1)

    对象 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则.计划或事件.对象具有属性和行为,在程序设计中对象实现了数据和操作的结合,使数 ...

  8. Java基础(6)- 面向对象解析

    java面向对象 对象 知识点 java 的方法参数是按值调用,是参数的一份拷贝 封装 使用private将 属性值/方法 隐藏,外部只能调用 get,set方法/非private 的接口 获取 重载 ...

  9. Java基础知识➣面向对象(八)

    概述 Java和C#都是面向对象语言,面向对象编程是目前高级语言习惯的编程模式,与C++编写过程编程而言,面向对象使用起来高效.灵活:面向对象的三个特征:封装.继承和多态. Java面向对象 1.类封 ...

随机推荐

  1. 201521123119 《Java程序设计》第13周学习总结

    1. 本周学习总结 Q以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 Q1. 网络基础 Q1.1 比较ping www.baidu.com与ping cec. ...

  2. 201521123085 《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...

  3. MySQL数据库引擎介绍、区别

    数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另 ...

  4. 如何选择适合的前端UI框架

    根据近几年前端框架的热门,在前端开发框架不断更新与交换的时代,每一年都有黑马出现,是否适合自己开发的项目就不得而知了,只有认真的了解之后才能知道,这里主要给大家说一下如何选择适合旅游的前端UI框架?相 ...

  5. log4j的基本使用和参数设定

    1.简介 apache的一个开放源代码项目. 精确控制日志的输出,包括输出的格式,输出的目的地,输出的过滤(不同级别日志的输出)等. 配置简单,不需要在代码中配置环境,支持两种配置文件格式,XML和J ...

  6. Laravel的Nginx重写规则完整代码

    laravel基本重写规则 location / { index index.html index.htm index.php; try_files $uri $uri/ /index.php?$qu ...

  7. MyBatis的俩种事务管理器的类型

    JDBC – 这个配置直接简单使用了 JDBC 的提交和回滚设置. 它依赖于从数据源得 到的连接来管理事务范围. MANAGED从来不回滚或提交一个连接而它会让 容器来管理事务的整个生命周期(比如 S ...

  8. 新版本mac 无法打开第三方应用

    新版本mac 没有任何应用可以打开的这个选项 现在解决方法已经找到 特此标记一下 1打开终端 2 输入 sudo spctl --master-disable 3.打开系统设置的中的安全即可出现

  9. PHP中public、protected、private权限修饰符

    PHP中有三种访问修饰符 默认是public public(公共的.默认) protected(受保护的) private(私有的) 访问权限 public protected private 类内 ...

  10. Class.getResource和ClassLoader.getResource的区别分析

    原文:http://swiftlet.net/archives/868 在Java中获取资源的时候,经常用到Class.getResource和ClassLoader.getResource,本文给大 ...