面向对象(基础oop)之类与对象
大家好,我叫李京阳,,很高兴认识大家,之所以我想开一个自己的博客,就是来把自己所了解的知识点通过自己的话写一下,希望被博客园的朋友们点评和一起讨论一下,也希望从博客园中多认识一些软件开发人员!现在我开始讲一下面向对象的一点知识,请你们多多点评和讨论!!
类与对象
类与对象是刚刚进入面向对象所必须知道的,因为面向对象中讲的属性与构造函数,现象与对象,继承多态,接口,抽象类都会用到类和对象,而且利用面向对象的思维去做一些小项目都会用到的,所以不可小视哦,嘻嘻!!!
好了,我现在开始通过自己的话分析类和对象。
科普一下下:
1)向对象是基于面向过程的,并不是用来淘汰的面向过程的。
2)如何使用面向对象的风格来编程?
1. 类:是对1群具有相同特征和功能的事物的1个统称,就是用来描述一群事物的. 所以说类不能直接使用.
2.定义类:
a. 语法:
class 类名
{
}
b. 位置:
定义在命名空间的下面.
3.类的里面应该定义什么:
a. 将这类事物拥有的共同特征定义为类的成员变量.
b. 将这类事物拥有的共同的功能定义为方法.(我们在自己写的类中 不要加static关键字)
4.如何找到类中的1个对象 并使用这个对象呢?
创建对象的过程:
①创建类的1个对象的语法:
类名 对象名 = new 类名();
Person p1 = new Person();
a. Person是自定义的数据类型 p1是1个变量.那么既然p1是个变量 就应该在内存中开辟空间.
b. new Person()是1个表达式
②当执行到这句代码的时候. 就根据Person类的模板创建了1个p1对象.这个p1对象中有person模板中定义的所有的成员和方法。所以这个p1就可以使用,因为它是1个对象。
5.访问对象中的功能
对象名.成员
6.定义在类中的变量,我们统称为类的成员.
成员变量: 将这类事物具有的相同的特征 定义为成员变量. 也叫做 字段、成员字段.
方法: 将这类事物具有的相同的功能定义方法 也叫 成员方法。
7.new关键字做的事情:
1). 在堆内存中开辟1块合适大小的空间.
2). 在这个空间中根据类的模板来创建对象.
new的是哪1个类,就根据这个类的模板来创建对象.
类模板中有什么,都会依次的创建在这个对象中.
3). 调用这个对象的构造函数.
4). 返回这个对象在堆空间中的引用地址.
8.类的成员的访问修饰防
public 公共的. 被public修饰的成员可以在任意的地方通过对象名点出来访问.
private 私有的. 被private修饰的成员只能在本类的内部通过对象名点出来访问。
无论是public还是private修饰的成员 都可以直接在类的内部访问. 因为作用域.
如果我们不为类的成员写任意的访问修饰. 那么默认是private.
10. 命名空间
namespace 用于定义1个命名空间.
在命名空间中 我们可以定义类. 类是属于命名空间的.要访问类的地方所在的命名空间如果和类所在的命名空间是相同的.那么直接就可以使用类名来访问这个类.如果不一样: 那么就不能直接访问了.这个时候可以通过如下两种方式来访问:
a. 使用类的全名称: 使用顶级命名空间一直往下点到这个类.
b. 使用using关键字 将类所在的命名空间引入. 然后在这个页面中就可以直接访问这个命名空间中的类了.
命名空间的作用:
在同1个命名空间中 不允许定义多个类的名称是相同的.
命名空间的作用在于防止类名冲突.
11. 类是引用类型的.
值类型与引用类型.
值类型:所有的数值类型、bool、char、枚举、结构.
引用类型:string、数组、类.
相同点:
局部变量无论是引用类型还是值类型,这个局部变量都是开辟在栈空间中的.
成员变量无论是引用类型还是值类型,这个变量是跟随着对象一起开辟在堆空间中的.
不同点:
值类型的变量真实的值 直接存储在该变量中
引用类型的变量无论是局部变量还是成员变量 真实的对象存储在堆空间中. 变量中存储的是对象在堆空间中的地址.
局部变量:定义在方法中的变量.
成员变量/字段/成员字段: 是直接定义在类下面
值类型变量之间相互赋值: 因为值类型的变量中存储的是真实的值.所以拷贝传递的也是真实的值.
赋值完成以后 对1个变量进行修改不会影响另外的1个变量的值.
引用类型变量之间相互赋值: 因为引用类型的变量中存储的是对象的地址 所以拷贝传递的也是地址
赋值完成以后 对1个变量指向的对象进行修改 会影响另瓦的1个变量指向的对象
因为这两个变量指向同1个对象.
凡是看到了new关键字.就说明在内存中重新的创建了1个对象了.
注意:①在代码世界中,一定是先有类,然后可以通过这个类来创建对象,就是把类当做一块模板,然后程序员写的代码可以在创建对象的时候就可以根据这个类的模板进行创建.
② 如果通过对象名想去点出对象中的成员,但是发现点不出来.
原因有二:
a. 对象中根本没有这个成员
b. 有,但是访问权限不够.
③ 在写类的时候需要注意的2个规范.
a. 类的命名: 一定要有意义. 这个类描述的是哪1群事物 那么就用这个事物的名称来命名就可以了.
每个单词的首字母大写. 名词.
变量的命名规范: 名词。首个单词的首字母小写 其他的单词的首字母大写.
方法的命名规范: 动词. 每个单词的首字母大写.
b. 1个类独占1个源文件.
我们在添加1个类的时候. 指定的名称是 新增的源文件的名称.
建议类的名称和这个源文件的名称保持一致. 这么做的好处方便管理.
④类的对象可以创建任意个.
同1个类的多个对象之间毫无关系.他们唯一的关系就是根据同1个模板创建出来的.
他们都具有相同的成员. 并且各自都拥有1份.特别是对象的字段的值. 对象之间互不影响 都是自己独有的.
⑤ 在using的时候 只要点到命名空间就可以 不要再点出类了.
⑥ 在方法中直接访问了字段的值.
方法的是谁的字段?方法属于那个对象, 那么访问的就是那个对象的字段 。
面向对象(基础oop)之类与对象的更多相关文章
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
- JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)
一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...
- JS--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)
一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...
- JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)
一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ...
- JS--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)
一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ...
- JS--我发现,原来你是这样的JS:面向对象编程OOP[3]--(JS继承)
一.面向对象编程(继承) 这篇博客是面向对象编程的第三篇,JS继承.继承顾名思义,就是获取父辈的各种"财产"(属性和方法). 怎么实现继承? 我们的JavaScript比较特别了, ...
- 了解JavaScript 面向对象基础 & 原型与对象
面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...
- JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)
函数声明 JavaScript中声明函数的方式:(无需声明返回值类型) function add(i1, i2) { return i1 + i2;//如果不写return返回 ...
- python-面向对象-03_面向对象基础语法
面向对象基础语法 目标 dir 内置函数 定义简单的类(只包含方法) 方法中的 self 参数 初始化方法 内置方法和属性 01. dir 内置函数(知道) 在 Python 中 对象几乎是无所不在的 ...
- 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象
079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...
随机推荐
- docker构建mysql容器及Navicat 远程连接
1. MySQL部署 1.1拉取MySQL镜像 docker pull mysql 查看镜像 docker images 1.2创建MySQL容器 首先建立所需要的 文件夹: docker run - ...
- oracle导出clob 工具
oracle导出clob 等大字段,用pl/sql 等无法导出,除了备份数据库,但是一般数据库中正式环境数据和开发环境中数据不一定完全一致或者合适导出,即使仅仅导出导入一个表,有时候也不方便或者业务上 ...
- iOS的本地推送删除不了解决方法
最近在研究苹果推送,当测试本地推送的时候,发现一个问题,就是一旦你添加了一个本地推动的通知,当你修改代码,删除应用,当你再次运行app,它还是会在横幅上面弹出推送,尼玛怎么搞都删除不了,近乎崩溃了,开 ...
- 如何在SQLServer中处理每天四亿三千万记录的(数据库大数据处理)
首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...
- AJAX中success函数的执行顺序
1,问题,在上图中,数据传输正常,但是一直输出为空的p,再输出66, 2,原因,默认开启了异步加载, 3,解决方法,开启同步,或者在success中添加函数.
- django基础知识之Response对象
HttpResponse对象 在django.http模块中定义了HttpResponse对象的API HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建 不调 ...
- HDU - 2276 位运算矩阵快速幂
挺有意思的一道题 要会运用一些常见的位运算操作进行优化 题目的本质就是要求下面的式子 \(dp[i][j+1]=(dp[i-1][j]+dp[i][j]) \mod 2\) (第\(i\)个字符在\( ...
- hdu 2654 Be a hero
()Become A Hero Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Python Flask框架之页面跳转
IDE用的PyCharm(还是vs强大啊). 项目结构: 2:页面: <!doctype html> <html lang="zh"> <head&g ...
- Scrapy安装指南(windows)
windows开发,难免遇到很多坑,比一般开发是艰苦得多.先不吐槽windows,我们直接看这个scrapy怎么安装. 首先,要有一份文档,比如我用这个: http://scrapy-chs.read ...