java第六课 oop
java oop
1.面向过程的结构化程序设计
弊端:方法和数据结构都是毫无规律的定义在程序中任何位置
方法定义和方法要处理的数据结构也都是分开定义
2.对象:每new一次,就创建1个新对象,和原来的对象之间没有影响
3.需求中的名词:对象
动词:方法
4.方法签名:包含方法名和参数类型类表“顺序”,
重载与参数名无关,只关注参数类型的顺序是否重复,
重载与方法返回值无关
5.构造方法有两点特殊规则:构造方法的方法名必须与类名相同;
构造方法没有返回值类型
6.构造方法常用于在创建对象时,初始化成员变量
7.this:当前对象的。。
8.引用类型数组
数组属于引用类型,数组也是1个对象
数组类型也是类型。
二维数组创建语法:
数据类型[][] 数组变量=new 数组类型[行数][列数];//其中列数可以省略
9.对象内存管理
堆:专门存储用new关键字创建的实例的空间(一盘菜)
垃圾回收器:Garbage Collection,GC,是JVM自带的一个线程(伴随主程序运行着的程序),用于回收废弃对象
内存泄露:废弃的对象没有被及时的回收
建议:确定一个引用变量指向的对象不再使用时,应该及时将应用类型变量设置成null。
System.gc():建议JVM马上调度GC尽快回收废弃对象
栈:存放方法中的局部变量(菜单)
java程序中每调用一个方法时,JVM在栈中为当前方法分配所需的空间,这个空间称为该方法的栈帧,
一个栈帧专门对应一个正在调用的方法。
栈帧中存储了1该方法的参数、局部变量等数据变量。当方法调用完成后,方法的栈帧将被清除,局部变量同时失效
方法区:用于存放类的信息(墙上的招牌菜海报)
方法去中的类信息只有一份
10.继承
继承就是使用一个类的定义,复制并扩展出一个新的类定义
java语言不支持多重继承,一个类只能继承一个父类,但是一个父类可以有多个子类
泛化:从多个类中,抽取相同部分,生成父类的过程
设计时,从从子类泛化出公共父类,再让子类继承父类
一次定义,处处使用
方法的重写Override
1.重写必须在继承的基础上进行
super调用父方法
2.动态方法调度:在运行时,父类变量根据指向子类对象的不同,动态判断调用何种重写方法
只有父类型对象自己才能调用父类型方法
3.重写和重载的区别
重载与重写是完全不同的语法现象,区别如下:
重载是:“一个类中”定义的多个相同方法名,但“参数列表不同”的方法。在“编译时”,
根据“传入参数的数据类型数据顺序”来决定“预先”绑定哪个方法。
重写是:在“继承关系的子类里”定义“和父类方法签名完全相同”的方法,在程序“运行时”,
根据“对象的类型”不同,“动态调度”,执行子类中重写的方法还是父类中的原始方法
访问控制
四个级别:public
包的概念:
同一个包中不能保存两个同名的类
import语句:引用类名
封装的意义:对外提供可调用的、稳定的功能
好处:
降低出错的可能性,便于维护
内部变化,不会影响外部使用
访问控制修饰符:
public
private:修饰的成员只能在本类的成员方法中调用
protected修饰的成员:可以被同一个包中的类以及子类使用。
java中规定,子类重写父类的方法,
子类中的方法访问控制范围不能小于父类方法的控制范围
默认访问控制的成员:仅在同一个包中可用
默认访问控制的类:只可以在同一个包中使用
java第六课 oop的更多相关文章
- 【C语言探索之旅】 第二部分第六课:创建你自己的变量类型
内容简介 1.课程大纲 2.第二部分第六课: 创建你自己的变量类型 3.第二部分第七课预告: 文件读写 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C ...
- 【C语言探索之旅】 第一部分第六课:条件表达式
内容简介 1.课程大纲 2.第一部分第六课:条件表达式 3.第一部分第七课预告:循环语句 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. ...
- NeHe OpenGL教程 第四十六课:全屏反走样
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击
Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击 文/玄魂 目录 Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击................... ...
- kali Linux Web 渗透测试视频教程— 第六课 网络扫描-nmap与zmap
Kali Linux Web 渗透测试视频教程— 第六课 网络扫描-nmap与zmap 文/玄魂 目录 Kali Linux Web 渗透测试视频教程— 第六课 网络扫描-nmap与zmap. 1 N ...
- NeHe OpenGL教程 第三十六课:从渲染到纹理
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第二十六课:反射
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第十六课:雾
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第六课:纹理映射
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
随机推荐
- asp.net连接oracle无法进行中文字符查询的问题
用 select * from nls_database_parameters where parameter = 'NLS_CHARACTERSET' 查询服务器字符集为 AL32UTF8 数据库连 ...
- 区间求mex的两种方法
区间求mex的两种方法 1.莫队+分块/莫队+二分+树状数组 2.线段树 预处理1-i的sg值(用一个vis数组,一个cur指针) 预处理nxt数组(a[nxt[i]]=a[i]) 枚举左端点l, 考 ...
- 只能在执行 Render() 的过程中调用 RegisterForEventValidation(RegisterForEventValidation can only be called during Render();
只能在执行 Render() 的过程中调用 RegisterForEventValidation(RegisterForEventValidation can only be called durin ...
- 谈在一个将TXT按章节分割的PHP程序中的收获
最近在做一个自动分割txt小说的东西,能够将一整个txt文件按照章节进行分割,然后分解成一个个小的.txt文件保存起来并且能够获取有多少章节和每章的章节名. 我最初的想法是: ① 先使用fopen打开 ...
- Asp.Net MVC 路由 【转】
原文链接:http://www.asp.net/learn/mvc/ 在这篇教程中,我将为你介绍每个ASP.NET MVC应用程序都具有的一个重要功能,称作ASP.NET路由(ASP.NET Rout ...
- unity3d所要知道的基础知识体系大纲,可以对照着学习,不定期更新
本文献给,想踏入3D游戏客户端开发的初学者. 毕业2年,去年开始9月开始转作手机游戏开发,从那时开始到现在一共面的游戏公司12家,其中知名的包括搜狐畅游.掌趣科技.蓝港在线.玩蟹科技.天神互动.乐元素 ...
- HDOJ2022海选女主角
海选女主角 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- Linux命令(6):mv命令
1.作用: 为文件或目录改名或将文件由一个目录移入另一个目录中 2.格式: mv [选项] 源文件或目录 目标文件或目录 3.常见参数: 4.使用实例: [root@localhost ~]# mv ...
- 编译android5.0源码的
java环境 Android 5.1 用到的jdk不再是Oracle 的 jdk ,而是开源的 openjdk,在ubuntu安装好后,使用如下命令安装jdk: $sudo apt-get insta ...
- 让.NET程序会说话
在开发过程中需要用到让程序自动播放语音,如果是一个一个录则太麻烦了,在开发过程中发现.NET已经自带了该功能 Type type = Type.GetTypeFromProgID("SAPI ...