最近开始学韩顺平的java
10.7 -p245
10.8 p246-p261
10.9 p262-p285
10.10 没看。
重载(overload)
- 同类方法同名,形参列表不同(system中out是一个对象,println是重载方法)
- 三要求:同名+形参必有不同+return无要求
不构成重载
可变参数
- 即:重载中 参数个数不同+功能相同 的多方法 一> 一个方法
求和可改为一个方法
- 可变参数可为0-多,
- 其本质是数组(方法 f(int …nums)可传一个实参为int []arr={1,2,3})
- 一个列表只出现一次可变参数
作用域(scope)
- 分类:全局变量(即属性,可在整个类作用,可不赋值!可加修饰符!) 局部变量(即方法的成员变量)
构造器
- 即:创建对象时,属性即有默认值
- 无返回值+与类名同 cat{public cat(){}}
- 可以有多个(可重载!)
- (javap 可反编译class,即可查看类)反编译:字节流–>类 编译 java–>class 可加-v、-p等查看附加信息
注 画出对象创建流程分析? 碰见类–先加载方法区—在堆里开辟空间—先全部初始化为规则的默认值,0,null等等—查看是否类中有赋值,修改—查看是否传入形参(才开始调用构造器)–常量池里开辟空间—堆里的赋值更换为常量池地址—此时修改完毕,堆的空间赋值给对象
this
- 即构造器形参直接写属性名字
- this表当前对象 this.name即当前对象的name属性
- this的hashcode和该对象的hashccode一致:hashcode会将地址转换为整数,不同地址不同整数
- this可以访问构造器:但只能放在构造器的第一条语句(构造器复用)
代码简化:判断name和age是否相等
创建一个新数组:int[]a=new int [b.length]
传两个数相除。但是除数不能为0.返回结果(若为0返回null即可。但是!要用Double而不是double?)x
√
中级篇第三构造器调用了第二个构造器,但不能再调用第一个(this只能放在第一条语句)
快捷键
ctrl+alt+l 快速格式化
alt+insert—constructor 构造器
(继承有用)ctrl+h 查看类层级关系 ctrl+b 定位到对应方法在哪里
.var 可以快速起名
包
创建不同文件夹区分管理同名字的类
com.xiaoming 其实是com和小明两级目录,一般为com.公司名.项目名.业务模块名
常见包:util工具包, net网络开发,awt界面GUI
eg1 arrays.sort()可自动排序
访问修饰符
public:都可 protected:子类+同包类 private :只有自己类可访问 无修饰符(默认):同包类
p280跳了
封装encapsuation
即透明性,隐藏实现细节
1.private属性 2.public set方法可以对属性赋值(方法中写判断逻辑,不合理则拒绝赋值) 3.public get方法获取属性值
属性值类型不一样,手动写太麻烦?使用alt+insert的getter和setter处理
使用构造器,则会绕过set?set写在构造器内。如原来构造器this.name=name 改为 this.setname(name)
继承
即两个类很多属性方法相同?仅有部分不同?如小学生和研究生两个类
多态
Super
overwrite
object类
断点调试



