基础知识巩固三
抽象类和接口:
- 抽象类的构造方法定义为protected,因为它只被子类使用
- 关注点:1、抽象方法不能包含在非抽象类中
- 2、抽象类不能使用new操作符来初始化创建实例对象,但当作为一种数据类型,可以创建一个元素是抽象类型的数组,
- 例如:Abstrac a = new Abstrac[10]
- 3、包含抽象对象的类必须是抽象的
- 4、子类的父类是具体的,这个子类也可以是抽象的
- 5、子类可以覆盖父类的方法并将它定义为abstract
日历类:Calendar 它的子类公历类:GreGorianCalendar()
1 Calendar c = new GregorianCalendar(); 2 3 c.get(Calendar.Year);//获取年份
1.8之前接口中只包含常量(public final static)和抽象方法(public abstract),1.8之后,接口变得更加灵活,可以有静态方法(static)和默认方法(default),方法前必须写关键词static/default
Comparable接口:可比较 其中的方法只有compareTo(Object o)
Cloneable接口是一个特殊请款(zai java.lang包中),这个接口是空的,成为标记接口,表示一个类拥有的某些特定的属性
- 注:自己定义一个类来实现Cloneable接口,必须覆盖Object中的clone()方法,否则会抛出CloneNotSupportedException异常
抽象类和接口的区别
protected Object clone() throws CloneNotSupportedException { return super.clone(); }
区别 变量 构造方法 方法
抽象类 无限制 有,不能使用new实例化 无限制
接口 必须是常量 无,不能用new实例化 抽象方法必须是公共的实例方法,还可以包含静态方法和默认方法
native是一个计算机函数,一个Native Method就是一个Java调用非java代码的接口。
包装类:
- 包装类没有无参构造方法,所有包装类的实例都是不可变的,这意味它们的内部值就不能再改变
- 每个数值包装类都有常量MAX_VALUE和MIN_VALUE
- Double.valueOf("12.4"):12.4(double)
- Integer.valueOf("12"): 12(int)
- valueOf和parseDouble方法区别在于,valueOf函数内部就调用了parseDouble方法,只不过它还有个自动装箱开箱的过程,这会增加系统性能的损耗,一般使用parseDouble
- 每个数值包装类都有两个重载的方法,将数值字符串转换为正确的以十进制为基数的数值
- 例如:
- Integer.parseInt("11",2):3
- Integer.parseInt("12",8):10
- Integer.parseInt("13",10):13
- Integer.parseInt("1A",16):26
- 注意Integer.parseInt("12",2)会报错,12不是二进制数