JAVA 学习笔记总结(二)

1.创建对象并给对象设置初始值有两种方式:    

方式1:先通过无参数构造器创建出一个对象,再通过对象调用相应的setter方法.    

方式2: 直接调用带参数的构造器,创建出来的对象,就有了初始值.

通过构造器和通过setter方法都可以完成相同的功能. 给对象设置数据:          

1):setter注入(属性注入).           2):构造注入.

如何选择:      

 (1)如果存在带参数的构造器,方式2是比较简洁的.      

 (2)如果在构建对象的时候需要初始化多个数据,如果使用方式2,那么构造器得提供N个参数,参数过大,不直观,此时方式1,简单明了.    

( 3)圆对象,如何画圆. 圆对象,必须根据半径来确定对象.              

就应该在构建圆对象的时候,就要确定半径值.            

有时候,需要根据数据来构建对象,此时优先选用构造器方式.

其他时候,任选.

2.方法重载和方法覆盖(方法重写)的区别:

方法重载: Overload

方法重写: Override

方法重载: Overload  

 作用: 解决了同一个类中,相同功能的方法名不同的问题.                

既然是相同的功能,那么方法的名字就应该相同.    

规则: 两同一不同.               同类中,方法名相同,方法参数列表不同(参数类型,参数个数,参数顺序).

方法重写: Override  

作用:解决子类继承父类之后,可能父类的某一个方法不满足子类的具体特征,此时需要重新在子类中定义该方法,并重写方法体.    

规则: 一同两小,一大.            

一同:父类和子类的方法签名是相同的,所以,建议:直接拷贝父类中方法的定义到子类中,再重写方法体,就OK了.  

3. Object类的常见方法:

1): protected  void finalize() :当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。              垃圾回收器在回收某一个对象之前,会先调用该方法,做扫尾操作. 该方法我们不要去调用.

2): Class  getClass() :返回当前对象的真实类型。

3): int hashCode(): 返回该对象的哈希码值,hashCode决定了对象再哈希表中的存储位置,不同对象的hashCode是不一样的.

4): boolean equals(Object obj) :拿当前对象(this)和参数obj做比较.                 在Object类中的equals方法,本身和 “ == ”符号相同,都是比较对象的内存地址.                 官方建议:每个类都应该覆盖equals方法,不要比较内存地址,而去比较我们关心的数据.,因为我们关系的是内容数据,而不是内存地址.                  比如:两个学生对象,我们不管是如何new出来的,只要学号相同我就应该认为是同一个对象.                             两个字符串,只要内容相同,我们就认为是同一个字符串.

5):String toString():表示把一个对象转换为字符串.                      打印对象时,其实打印的就是对象的toString方法.                      System.out.println(obj对象);等价于  System.out.println(obj对象.toString());                      默认情况下打印对象,打印的是对象的十六进制的hashCode值,但是我们更关系对象中存储的数据.                      官方建议我们:应该每个类都应该覆盖toString,返回我们关心的数据.

3.final修饰符

final本身的含义是“最终的,不可改变的”,它可以修饰非抽象类,非抽象方法和变量。注意:构造方法不能使用final修饰,因为构造方法不能被继承,肯定是最终的。

4.接口

接口成员:    

接口的命名:一般的,接口表示就有某种能力的,有时候,有人习惯使用able/handle作为后缀.   为了从名字上区分是接口还是类,大多数人习惯使用I作为接口名前缀.  

 1):全局静态常量,接口中定义的变量,默认以:public static final修饰.                    所以有人,习惯使用接口来作为常量类.                    Struts2中:Action接口,中就大量定义了常量.  

 2):公共静态内部类: 默认以,public static修饰.如Map接口值Entry.  

 3):公共的抽象方法:在接口中定义的方法,默认以:public abstract修饰.      

为什么接口中的方法都是抽象方法,因为接口仅仅只是规定具有哪些行为,实现.

接口的特点和实现类: ------------------------------------------

特点: ① 没有构造方法,不能实例化。 ② 接口只能继承接口,不能继承类,且接口支持多继承。      一个接口允许有多个父接口.      interface IWalkable extends 接口1,接口2{}

③ 接口里的方法方法全是抽象的,默修饰符是public abstract。

④ 接口里的字段全是全局静态常量,默认修饰符是public static final。

⑤ 接口里的内部类全是静态的,默认修饰符是public static。

------------------------------------------

接口的目的,在于高度的统一规范,接口必须要有实现才有意义.  我们把实现接口的类,称之为实现类,功能在于实现接口中的多个抽象方法.

5.接口和抽象类

相同点: 都位于继承的顶端,用于被其他实现或继承。 都不能实例化。 都可以定义抽象方法,其子类都必须覆写这些抽象方法。   区别: 接口没有构造方法,抽象类有构造方法。 抽象类可包含普通方法和抽象方法,接口只能包含抽象方法; 一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口(接口弥补了Java的单继承)。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值