(疯狂java)第三课
最近很忙,都没有看书,罪过...
第五章(面向对象上)
1.类是一种对数据结构的封装,也就是说,一个类在在理解上事存在实际的含义的,比如一个人类,人类也是个类,表明这个类不是家禽类,是有人的特点的生物的集合。一个人,是一个实例,而人就是类。在类里有实例方法和属性,还有类方法和属性,前者是属于特定的实例,但是后者是属于该类。
2.修饰符。Public、protected、private、static、final、abstract。这个里面主要就事使用的范围和权限不一样,另外使用不同的修饰符是对类封装的一个基本手段。
3.类的内存占用,这个类似于指针,创建一个类对象。类地址放在栈里面,而真正的内存是放在队里面,使用时时通过去访问地址获取。this关键字这个就是指向自身的一个(地址)指针,通过它类对类实例的相关的属性和方法进行调用,如果想要使用父类的方法就应该是super关键字去调用
4.方法参数传入是是值传递,无论是基本类型还是对象类型。基本类型基本就事int这样的。复制一份,然后进行操作,对原来的数值并无什么影响。对于对象的传入,确实可以改变对象的内容,这是因为在传值的时候传递的时内存的地址,通过这个内存的地址就可以对这个对象进行操作,这点要明白。对于可变形参函数的形式,public static void test(int a,string ... books)。一般蚕蛹这种方法声明,比较直观,前面的a时一个数字,后面的字符串统统归为一个数组。
5.方法重载,就事一个类李阿敏方法名字一样,但是参数的列表不一样,通过参数列表对其进行区分。由于java调用方法是不太注重方法返回值的,所以也就是为什么不能使用返回值类型进行区分,再者说,如果一个方法的参数一样,名字一样,那么怎么区分呢?程序员的工作就是给变量命名,如果所有的都一样,那么结果只能一样。
6.封装就事把该露出来的都露出来,不改露出来的都盖住。通过以接口为标准的封装,有利于实现软件工程。
7.重载构造器,就事为了一步到位的去对实例进行初始化。通过重载去实现,属性初始化的多样性。
8.java里面一个类只能直接继承一个类,至于他的父类有没有父类,这个不一定了了。子类可以获得父类的方法和属性,同时也可以对父类的方法进行重写(不是重载),这时候想要调用原来父类的方法,就应该使用super关键字。在继承的关系中,父类总是要比子类先初始化,就比如说,没有老子,怎么会有儿子呢。
9.多态,就是编译时和运行时类型不一致,就是多态,比如子类运行自己方法和运行父类的方法时候。 多态==晚绑定。
不要把函数重载理解为多态。
因为多态是一种运行期的行为,不是编译期的行为。
多态:父类型的引用可以指向子类型的对象。
比如 Parent p = new Child();
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;
如果有,再去调用子类的该同名方法。
(注意此处,静态static方法属于特殊情况,静态方法只能继承,不能重写Override,如果子类中定义了同名同形式的静态方法,它对父类方法只起到隐藏的作用。调用的时候用谁的引用,则调用谁的版本。
10.instanceof就是判断实例是否是某个类
这一节感觉内容还是很多的,很多东西只能通过大量代码实践才能理解。
(疯狂java)第三课的更多相关文章
- java第三课:分支结构、循环结构
分支结构 1.if后面可以不加{},但是不建议,容易产生误解2.写程序的时候先防屌丝测试,再写逻辑,否则会出错3.if:一条分支 if else:两条分支 if...else if...:多条分支(结 ...
- 疯狂JAVA——第三章 数据类型和运算符
3.1注释 1.单行注释 2.多行注释 3.文档注释——文档注释以斜线后紧跟两个星号(/**)开始,以星号后紧跟一个斜线结束(*/),中间部分都是文档注释,会被提取到API文档中. API文档类似于产 ...
- (疯狂java)第四课(上)
趁着周末玩爽了,兴致来了,继续玩玩java(估计再玩下去,就要被java玩了),第六章实在是很长,那就两个阶段来看吧. 1.java 7的增强包装类 这些包装类就是java上的基本类型,只不过人人基本 ...
- Java 第三课 数组排序
1.java.util.Arrays.sort(arr) //升序 2.冒泡排序:相邻元素比较 for (int i=0; i <arr.length-1; i++){//内部遍历一次,确定最 ...
- 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题
调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...
- 马士兵hadoop第三课:java开发hdfs
马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...
- 疯狂java讲义 第三版 笔记
java7新加特性: 0B010101 二进制数 int c=0B0111_1111; 数值中使用下划线分隔 switch 支持String类型 字符串常量放在常量池 String s0 ...
- 马士兵hadoop第三课:java开发hdfs(转)
马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...
- 《疯狂Java:突破程序员基本功的16课》读书笔记-第二章 对象与内存控制
Java内存管理分为两个方面:内存分配和内存回收.这里的内存分配特指创建Java对象时JVM为该对象在堆内存中所分配的内存空间.内存回收指的是当该Java对象失去引用,变成垃圾时,JVM的垃圾回收机制 ...
随机推荐
- velocity & freemarker
一.Velocity Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅使用简单的模板语言(template language)来引用由java代码定义的 ...
- 抓其根本(一)(hdu2710 Max Factor 素数 最大公约数 最小公倍数.....)
素数判断: 一.根据素数定义,该数除了1和它本身以外不再有其他的因数. 详见代码. int prime() { ; i*i<=n; i++) { ) //不是素数 ; //返回1 } ; //是 ...
- 【Sqlite3】sqlite_sequence表(转)
sqlite_sequence表也是SQLite的系统表.该表用来保存其他表的RowID的最大值.数据库被创建时,sqlite_sequence表会被自动创建.该表包括两列.第一列为name,用来存储 ...
- python基础===基于requests模块上的协程【trip】
今天看博客get了一个有趣的模块,叫做 trip #(pip install trip) 兼容2.7版本 基于两大依赖包:TRIP: Tornado & Requests In Pa ...
- sicily 1046. Plane Spotting
1046. Plane Spotting Time Limit: 1sec Memory Limit:32MB Description Craig is fond of planes. Mak ...
- Median_of_Two_Sorted_Arrays(理论支持和算法总结)
可以将这个题目推广到更naive的情况,找两个排序数组中的第K个最大值(第K个最小值). 1.直接 merge 两个数组,然后求中位数(第K个最大值或者第K个最小值),能过,不过复杂度是 O(n + ...
- hive-group by的时候把两个字段变成map
源表结构: pcgid string mobilegid string value double 测试数据如下: p1 m1 ...
- XAlign—自动对齐代码插件
XAlign An amazing Xcode plugin to align regular code. It can align anything by using custom alignmen ...
- Two Sum ——经典的哈希表的题
Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...
- [BZOJ4566][Haoi2016]找相同字符 后缀自动机+dp
4566: [Haoi2016]找相同字符 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1212 Solved: 694[Submit][Stat ...