IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 慢慢学习,然后惊呆所有人(七,抽象类与接口) -> 正文阅读

[Java知识库]慢慢学习,然后惊呆所有人(七,抽象类与接口)

目录

什么是抽象类?

抽象类的使用(抽象类自身无法实例化 !!!)?

抽象类自身为什么不能实例化?

?

什么是接口?

接口的实现(接口的实现需要创建一个类来实现)

接口是可以多实现的 !!!

实现方法二

jdk8.0增加的新特性:


相信大家对前面的文章理解对Java有一定的理解,下面就让我们继续对Java继续学习吧!

?

?

什么是抽象类?

如果父类中方法不需要实现(没有方法体),而让子类自己实现的,该方法就可以声明为抽象方法,该类必须是抽象类(简单点来说就是存在abstract关键字修饰

public  abstract Abstract_class{
//声明为抽象类
    public  abstract void an_abstract_class();
    //抽象方法
        
    
}

抽象类的使用(抽象类自身无法实例化 !!!)?

当一个类继承抽象类,该类就必须要实现该类的抽象方法强制子类实现)。

理解误区:(当该类中有抽象方法,则改类一定是抽象类,但当该类是抽象类,类当中的方法不一定全部是抽象方法(抽象方法可以是0个或者多个)

抽象方法:abstract关键字修饰的方法,本质就是强制子类实现。

当一个类继承了抽象类,没有实现继承抽象类的方法,必须将该类声明为抽象类,给其子代实现。

抽象类自身为什么不能实例化?

抽象类自身当中有抽象方法,抽象方法中并没有实现该方法,而是让其子代实现,所以无法实例化,????????

解决办法:但可以多态方式实例化(本质是实例子类)与使用内部类实现抽象方法。

public class Pet extends Abstract{
    public static void main(String[] args) {
        Abstract p =new Abstract() {
            @Override
            public void say() {
                System.out.println("匿名内部类实现");
            }
        };
        p.say();
    }
    @Override
    public void say() {
        
    }
}

?

?

什么是接口?

Java中的接口是一种特殊的的抽象类它里面的方法都没有实现

接口特点:

1,普遍情况下使用public修饰符修饰(其他修饰符也可以修饰,但通常跨包使用,用不到

2,使用interface关键字进行修饰,

3,接口的属性一般使用静态属性或者常量(默认是public修饰),不写不同的属性,一般写常量或者共同变量

public interface MyInterface{
    public static String name="静态属性";
    static int age=18;
}

4,接口当中方法全部都是抽象方法,没有方法体;

5,默认方法修饰符都是public ,原因:(继承后子类可以拿到父类方法)

接口的实现(接口的实现需要创建一个类来实现)

创建一个接口类(命名规范:I + 功能名称)

public interface IUserDao{
    public void login(String name,String passwd);
    void say();
}

创建一个实现类型(命名规范:去掉大写的I),实现类必须实现全部方法或者实现需要的方法,其他方法写成抽象方法

public class UserDao implements IUserDao{

    @Override
    public void login(String name, String passwd) {

    }

    @Override
    public void say() {

    }
}

接口是可以多实现的 !!!

class UserDaoImpl implements UserDao, Icon {
    //接口的多实现

    @Override
    public void login(String name, String passwd) {

    }

    @Override
    public void say() {

    }

    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
        
    }

    @Override
    public int getIconWidth() {
        return 0;
    }

    @Override
    public int getIconHeight() {
        return 0;
    }
}

实现方法二

接口类:命名规范:功能

public interface UserDao{
    public void login(String name,String passwd);
    void say();
}
//定义接口功能

实现类:命名规范: 实现类名称+Impl?

public class UserDaoImpl implements UserDao{
//实现类名称+Impl
    @Override
    public void login(String name, String passwd) {
        
    }

    @Override
    public void say() {

    }
}

jdk8.0增加的新特性:

1,在接口中存在默认的方法,使用default关键字修饰。

default void say(){
        System.out.println("jdk8.0新特性");
}

多态调用方式

public static void main(String[] args) {
        UserDao p = new UserDaoImpl();
        p.say();
}

?2,也可以定义静态方法,此时接口就是一个工具类。

?

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 16:31:00  更:2021-08-23 16:31:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:10:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码