java学习笔记—— 抽象类接口内部类

Posted 玛丽莲茼蒿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习笔记—— 抽象类接口内部类相关的知识,希望对你有一定的参考价值。

在之前的学习中,父类其实就是子类的抽象了,比如老虎和兔子都可以被抽象成动物。抽象类是更进一步的抽象,而接口是在抽象类的基础上又抽象了一层。

一、抽象类和抽象方法

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. 成员内部类

1)内部类如何实例化?

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

 2. 静态内部类

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

3. 局部内部类

在方法中的类

4.匿名内部类

以上是关于java学习笔记—— 抽象类接口内部类的主要内容,如果未能解决你的问题,请参考以下文章

Java匿名内部类的学习

Java编程思想 学习笔记9

Java中接口抽象类与内部类学习

Java:Effective java学习笔记之 接口优于抽象类

Java学习笔记—抽象类和接口

知了堂学习笔记java 接口与抽象类