JavaSE进阶(多态,内部类,常用API)

2023-08-07  本文已影响0人  扶光_

多态

子类可以重写父类的方法,那么我们可以定义很多同类型的对象
同类型的对象,执行同一个行为,会表现出不同的行为特征叫多态


常见形式

父类名称 对象名 = new 子类构造器
接口 对象名 = new 实现类构造器

多态的优势

在多态形势下,右边对象可以实现解耦合,便于扩展和维护
Animal a = new Cat(); //直接改对象就行
a.run();//后续业务行为随对象而变,后续代码无需更改

缺点:
多态下不能使用子类独有功能

如何解决
可以使用强制类型转换 从父到子
子类 对象变量 = (子类) 父类类型变量

内部类

内部类就是定义在一个类里面的类,里面的类是寄生,外面的类是宿主

public class People{
    public class Heart{
      }
    }

使用场景及作用

静态内部类

有static修饰 ,属于外部类对象

成员内部类

无static修饰,属于外部类对象

创建对象格式 外部类.内部类 对象名 = new 外部构造器().new内部构造器();

匿名内部类

本质上是一个没有名字的局部内部类,定义在方法中,代码块中
作用:方便创建子类对象,最终简化代码简写
格式

new 类|抽象类|接口名(){
方法重写
  }

api

toString()

返回堆内存中的地址(默认可以省略toString)
实际开发中,输出地址是没有意义的
存在的意义 父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息

equals()

默认是比较两个对象的地址是否相同 ==也可以替代equals

StringBuilder

是一个可变的字符串类,对象容器
提高字符串的操作效率,如拼接,修改
拼接之后要恢复成String类型

StringBuilder sb = new StringBuilder ();
sb.append('a');
sb.append('42');
sout(a);//a42

String rs = sb.toString();

Math

基本数字运算方法,没有提供公开构造器

System类

exit(int status) 终止当前运行的java虚拟机 0就是终止

System.currentTimmeMillis()计算机认为时间有起始值,返回1970-1-1 00.00.00到此刻的毫秒值

BigDecimal

用于解决浮点型精度失真的问题
比如0.1+0.2不等于0.3

BigDecimal a = BigDecimal.valueOf(0.1);
BigDecimal b = BigDecimal.valueOf(0.2);
BigDecimal c = a.add(b);
sout(c); //0.3

add 加法
subtract减法
multiply乘法
divide 除法

double rs = c。doubleVaule();、、变成double类型

上一篇下一篇

猜你喜欢

热点阅读