Java学习随笔

抽象类:不能被实例化,其余与普通的类没什么区别.它只能被另一个类继承,然后可以实例化继承抽象类的类,继而调用抽象类中的方法;
抽象方法:抽象方法必须在抽象类中,继承这个抽象类的类必须重写这个抽象方法,除非这个子类被声明为抽象的.然后这个子类如果别其他的类继承,也必须实现最开始的抽象类中的抽象方法,否则也无法实例化.

  • 抽象类不一定包含抽象方法,但是抽象方法一定要在抽象类之内

  • 抽象类中的抽象方法只是声明,不给出具体的方法,方法要在抽象类被继承时重写实现

  • 构造方法、类方法(static修饰的方法)不能被声明为抽象方法

重写:参数相同,返回类型可以不同(java 7 以后),但是必须是父类返回值的派生类;访问权限不能更低

  • 声明为final的方法不能重写,声明为static的方法不能重写,但是可以被再次声明

  • 构造方法不能被重写;如果不能继承一个方法,则不能重写这个方法。

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

  • 每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

  • 最常用的地方就是构造器的重载(构造方法的重载)。

  • 被重载的方法必须改变参数列表(参数个数或类型不一样);

  • 被重载的方法可以改变返回类型;

  • 被重载的方法可以改变访问修饰符;

  • 被重载的方法可以声明新的或更广的检查异常;

  • 方法能够在同一个类中或者在一个子类中被重载。

  • 无法以返回值类型作为重载函数的区分标准。

接口:

  • 接口无法被实例化,但是可以被实现。

  • 一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类

  • 接口没有构造方法。

  • 接口中所有的方法必须是抽象方法。

  • 接口不能包含成员变量,除了 static 和 final 变量。

  • 接口支持多继承。

  • 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。

  • 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。

  • 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

抽象类与接口的区别

  • 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。

  • 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。

  • 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

  • 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。

  • 接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。

  • 接口中的方法都是公有的。

  • 当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。

  • 类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。

  • 类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。

  • 如果实现接口的类是抽象类,那么就没必要实现该接口的方法。

Java中的接口有什么作用?既然接口中的方法都要被实现,那么为什么不直接在欲实现接口的类中定这些方法,所以为什么要接口?

二维数组为什么是随机存取结构?查找二维数组中的一个元素的时间复杂度是o(1),为什么?

1
2
3
int element[][] = new int[1][2];
element.length();//表示二维数组的行数
element[0].lenth();//表示二维数组的列数

字符串类型的日期转换为Date类型的日期

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
* @author 盛文增
* @Description TODO
* @Date 2019/7/27 0:23
* @Param
*/
public class Test {
public static void main(String[] args) {
try {
SimpleDateFormat spf = new SimpleDateFormat("yyyy年mm月dd日");
Date today = spf.parse("2019年07月27日");
} catch (ParseException e) {
e.printStackTrace();
}
}
}

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×