java学习笔记——抽象类接口内部类(代码片段)

玛丽莲茼蒿 玛丽莲茼蒿     2022-11-29     175

关键词:

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

一、抽象类和抽象方法

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.匿名内部类

java07面向对象(高级)类变量类方法代码块final抽象类接口内部类(代码片段)

...方法2.1基本概念2.2main方法三、代码块四、final关键字五、抽象类六、接口七、内部类7.1定义在外部类局部位置上(如方法内)7.1.1局部内部类(有类名)7.1.2匿名内部类(没有类名)7.2定义在外部类的成员... 查看详情

java学习笔记(代码片段)

java笔记一、面向对象一、面向对象二、累和对象三、类的定义和使用四、构造方法五、this关键字六、方法重载七、static关键字二、继承和多态一、继承的含义以及用法二、方法的重写三、多态及其应用四、super关键字五、Object... 查看详情

kotlin学习笔记——接口抽象类泛型扩展集合操作符与java互操作性单例(代码片段)

注:编码工具为IntelliJ目录接口示例定义变量示例变量默认值抽象类示例实现接口泛型泛型类泛型函数泛型实现自定义map变换泛型类联合泛型函数实现泛型函数实现类型约束泛型vararg参数vararg示例泛型vararg类型判断out和in关键... 查看详情

接口---jdk8新特性以及接口和抽象类区别学习笔记2022-3-24(代码片段)

学习地址:https://www.cnblogs.com/zupengliu/p/10802535.html接口jdk8之前interface(接口)中可以定义变量和方法,变量必须是public、static、final的(公共静态常量),方法必须是public、abstract的(公共抽象方法)。由于这些修饰符都是默认的... 查看详情

java学习笔记总略

二、正文(一)Java1.接口和抽象类的区别①抽象类里可以有构造方法,而接口内不能有构造方法。②抽象类中可以有普通成员变量,而接口中不能有普通成员变量。③抽象类中可以包含非抽象的普通方法,而接口中所有的方法必... 查看详情

java多线程学习笔记—“lambda表达式”(代码片段)

Java—“Lambda表达式”一、Lambda表达式概念1.函数式接口二、为什么要用Lambda表达式三、Lambda表达式具体用法★四、Lambda表达式简化匿名内部类五、使用Lambda表达式实现Runnable接口创建线程一、Lambda表达式概念Lambda表达式是java8中... 查看详情

java学习笔记3.7.2抽象类接口与多态-接口

文章目录零、本讲学习目标一、老版本接口定义二、JDK8接口定义(一)接口定义语法格式(二)接口语法定义说明三、接口案例演示(一)接口的定义与实现1、创建形状接口2、创建圆类,实现形状接口3、创建测试类4、课堂练... 查看详情

java内部类学习笔记

这是我学习Java内部类的笔记1.为什么使用内部类?使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响1.1.使用内部类最大... 查看详情

java学习笔记3(datawhale教程)(代码片段)

java学习笔记3(datawhale教程):类与方法,继承与多态,抽象类与接口文章目录java学习笔记3(datawhale教程):类与方法,继承与多态,抽象类与接口一.类与方法1.类与对象2.成员变量3.成员方法语法格式来看例子成员方法的参数值参数引用参数... 查看详情

java集合学习笔记:arraylist(代码片段)

Java集合学习笔记:ArrayList简介UML常用方法增删改查迭代内部类静态内部类自动扩容逻辑Java7Java8扩容-核心代码移除-核心代码使用建议参考资料简介ArrayList是List接口的大小可变数组的实现。实现了所有可选列表操作,并允... 查看详情

java集合学习笔记:arraylist(代码片段)

Java集合学习笔记:ArrayList简介UML常用方法增删改查迭代内部类静态内部类自动扩容逻辑Java7Java8扩容-核心代码移除-核心代码使用建议参考资料简介ArrayList是List接口的大小可变数组的实现。实现了所有可选列表操作,并允... 查看详情

java学习笔记3.7.3抽象类接口与多态-多态

文章目录零、本讲学习目标一、了解多态(一)定义(二)作用(三)说明二、案例演示多态(一)创建动物类(二)创建鸟类,继承动物类(三)创建猫类,继承动物类(四)创建狗类,继承动物类(五)创建学生类(六)创... 查看详情

[读书笔记]java编程思想第9章之接口(代码片段)

Java提供了一个叫做抽象方法的机制,这种方法是不完整的;仅有声明而没有方法体。包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的。如果从一个抽象类继承,并想... 查看详情

java学习笔记3.8.4内部类-匿名内部类

文章目录零、本讲学习目标一、内部类概述二、匿名内部类(一)匿名内部类定义(二)匿名内部类说明(三)访问局部变量注意事项(四)创建匿名内部类对象的语法格式(五)匿名内部类案例演示1、创建动物接口2、创建学... 查看详情

9.接口与内部类(代码片段)

一.抽象类不可以被实例化为对象必须被继承不能用final修饰属于后期(动态)绑定在设计阶段要确定好是否定义抽象类例子:哺乳动物类abstructclassburu()  2.抽象方法是不完整的方法,只有声明,但没有方法主体仅代表一种类型... 查看详情

“全栈2019”java第一百零六章:匿名内部类与抽象类接口注意事项

难度初级学习时间10分钟适合人群零基础开发语言Java开发环境JDKv11IntelliJIDEAv2018.3文章原文链接“全栈2019”Java第一百零六章:匿名内部类与抽象类接口注意事项下一章“全栈2019”Java第一百零七章:匿名内部类与构造方法注意事... 查看详情

java学习笔记之内部类和静态内部类的简单理解和使用(代码片段)

Java内部类和静态内部类内部类和静态内部类区别参考内部类和静态内部类区别简单理解就是:如果把类比喻成鸡蛋,内部类为蛋黄,外部类是蛋壳。那么静态类相当于熟鸡蛋,就算蛋壳破碎(外部类没有实例化ÿ... 查看详情

[java学习笔记]java核心技术卷1第六章接口与内部类

第6章接口与内部类6.1接口一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象。在接口声明中,方法自动public,可以不写修饰符。在实现接口时必须把方法声明为public。一个接口中可以包含... 查看详情