面向对象(多态、抽象类、接口、包装类、常量池)

1.重写Object类的方法。
toString方法,原本的toString方法是Object类提供的,用于打印hashCode,重写的目的是用于打印当前对象的属性和值。
2.equals方法,
原本的equals方法是Object类提供的,用于比较两个对象的地址是否相同String类对equals方法进行了重写,改变为了比较字符串的内容,在实际开发中会遇到一些需要如果对象的属性值相同,就equals比较为true的情况,那么可以对equals方法进行重写。
hashCode方法,也是Object提供的,是内存地址的表现形式,默认是十进制的,在重写equals方法要求重写hashCode,因为对象equals相等,hashCode必须一致。权重31是固定的。
3.多态:
父类作为形参,父类作为返回值形参是父类,实际参数是子类对象,传入不同的子类,实现不同的效果。在程序执行过程中,执行同样的操作,根据环境的不同,所产生不同的效果。父类做为形参,实际传入参数是子类对象,这里实现自动向上转型父类作为返回值,实际返回值是子类对象,这里实现自动向上转型。
4.向上转型:
格式:父类 name = new 子类();可以访问的方法:父类独有的方法,和子类重写父类的方法,不能调用子类独有的方法。
5.向下转型:
父类 name = new 子类(); 子类 sonName = (子类)name; 多态实现的基础:方法重写是多态实现的基础
6.instanceof关键字:
类型转换异常。不能直接将父类对象转换为子类对象。我们可以使用instanceif关键字来避免这种错误的产生。引用 instanceof 类型 ,返回值为布尔类型,如果成立就true,否则就false。
7.final关键字:
修饰类表示本类不能继承,修饰方法表示方法不能被重写,可以被继承,修饰属性表示常量,通常在定义的时候赋值,也可以在构造方法中赋值,不能重复赋值。static+final修饰表示静态常量,只能定义在类的内部,必须在定义的时候初始化,也不能重复赋值。
8.抽象类:
抽象方法没有方法体 使用abstract修饰。抽象方法必须先存在于抽象类中 同样也使用abstract来修饰。子类必须重写父类的抽象方法(普通方法根据需求是否重写) 除非子类也是抽象类。抽象类不能直接new对象(不能实例化) 必须通过new子类的方式来创建对象 多态。可以定义属性,可以定义普通方法,可以定义构造方法,给子类使用
9.接口 interface
接口中只能有抽象方法不管是否书写 publicabstract 修饰,都是公开的并且抽象的。实现类必须实现接口中,所有的抽象方法 ,除非子类也是抽象类。接口不能直接new对象,也是通过new子类的方式(实现类)创建对象,还是多态。接口中不能写普通属性,只有静态常量 publicstatic final修饰的,不管是否书写前边三个单词。接口不能有构造方法。普通方法在JDK1.7包 括JDK1.7之 前 是 不 能 写 的JDK1.8可以的。在访问修饰符以后使用defualt修饰即可。JDK8开始可以写静态方法,之前不行。多态的实现方式还是跟之前一样,不冲突,向上向下转型一样的。多态的实现方式还是跟之前一样,不冲突,向上向下转型一样的。接口抽象类的区别当你关注一个事物的本质的时候,使用抽象类,当你关注一个功能的时候,使用接口。 抽象类使用abstract修饰 接口使用interface,子类只能继承一个抽象类,但是可以实现多个接口,接口也可以继承多个接口,抽象类中可以有普通方法,普通属性,构造方法,接口不可以(1.8可以写普通方法和静态方法),接口中的属性都是静态常量 ,方法默认都是公开的 抽象方法,抽象类不是的。Java中不支持多继承,但是可以通过接口继承多个接口,实现类实现多个接口达到类似多继承的效果。鼠标放到属性或者方法,显示红色的表示私有修饰,显示蓝色的,表示包级别修饰,显示绿色的表示公开的。
10.枚举:
定义格式 使用enum替代class。类中直接写常量的值。enum修饰的类中都是静态常量。不能直接new对象,必须直接赋值。
11.包装类:
每一个基本数据类型对应的都有一个包装类,int包装类是Integer,char包装类是Character,其他的包装类都是首字母大写。构造方法:每一个包装类都提供本身对应的数据类型和字符串(字符串必须可以解析为对应的类型)作为参数的构造方法。Value,将引用数据类型转换为基本数据类型,前缀是基本数据 类型的名称。
12.toString方法
将对应的包装类型转换为字符串。parse
将字符串转换为对应的基本数据类型,转换数值的情况下字符串必须可以真正解析为一个数值才可以,否则就NumberFormatException,数字转换异常。
13.valueOf方法
将基本数据类型转换引用数据类型。 自动拆箱和装箱,从jdk1.5开始,支持包装类和基本数据类型混合运算,目的就是方便我们的书写。将基本数据类型直接赋值给对象,自动装箱。将引用数据类型直接赋值给基本数据类型,自动拆箱。
14.Math类:
数学类,给我们提供的有一些数学公式的方法,两个静态常量 PI和E。获取随机数的方法 Math.Random() 得到的是一个double类型的0.*的小数。
15.String类
length 字符串长度,Equals 比较字符串内容,equualsIgnoreCase 忽略大小写比较,toLowerCase 转换为小写,toUpperCase 转换为大写,concat 拼接字符串,indexOf 查找第一个字符串所在的下标,lastIndexOf查找最后一个字符串所在的下标,subString截取字符串,trim去除前后空格,split分割字符串,charAt将字符串的某个元素转换为char字符,endsWith判断是否是结尾,startsWith判断是否以开头多态
16.常量池的概念:
我们使用等号直接赋值的字符串将会存放在常量池中,减少内存的开销。整型和char的包装类的byte取值范围的数值也会在常量池中,目的一样。
17.StringBuffer & StringBuilder:
这两个都属于可变字符序列,StringBuffer是线程安全的,StringBuilder是非线程安全的,当我们需要重复的改变字符串的内容的时候根据情况使用以上两个,不要使用String

猜你喜欢

转载自blog.csdn.net/Surf_Lynn/article/details/104858367