在之前的学习中,父类其实就是子类的抽象了,比如老虎和兔子都可以被抽象成动物。抽象类是更进一步的抽象,而接口是在抽象类的基础上又抽象了一层。
1.抽象方法只有方法名,没有方法体。
- //抽象类
- public abstract class Person {
- //无参构造函数
- public Person(){
- }
-
- //有参构造函数
- public Person(String name){
- }
-
- //抽象方法
- public abstract void run();
-
- //非抽象方法
- public void sayHello(){
- System.out.println("hello,the last day of June");
- }
- }
2.只要该类包含一个抽象方法,那么这个类就是抽象类(that is to say,抽象类里可以有非抽象方法)。
3. 抽象类存在构造器(构造函数)吗?
有,并且有参无参都可以有。因为其子类实例化的时候要先调用父类的构造函数,也就是抽象类的构造函数,所以抽象类是有构造函数的。
4. 抽象类不能被实例化(虽然它有构造方法),只能作为其他类的父类
5. 但是由于类只能单继承的局限性,抽象类用的没有接口多(接口可以实现多继承)。
6. 子类实现抽象类依然是extends关键字
1. 接口只能写“规范”,都是抽象方法,无法写具体的实现(不能出现非抽象的方法)。

2. 接口内的方法默认都是被“public abstract”修饰,可以不写;接口的属性默认都是被“public static final”修饰。but在抽象的时候一般只抽象方法,不会在接口里写属性。
3. 实现类用implements关键字,必须实现接口规定的所有方法。
4. 接口没有构造函数,自然无法实例化(抽象类有构造函数,也不能实例化)。
5. 利用接口实现多继承。在下例中,当前类必须要实现UserService和TimeService的所有方法。

概念不用硬记,可以后续慢慢了解

1)内部类如何实例化?

2)内部类可以获得外部类的private属性

静态内部类不能获得外部类的private方法,因为静态类加载的时候id还没加载。

在方法中的类

