Java面向对象 ------------------抽象类,接口,异常

JAVA头歌实训 Java面向对象高级 面向对象程序设计Java Java面向对象高级题目解答 阅读详情

一,抽象

关键字:abstract  

此关键字修饰方法为抽象方法,修饰类为抽象类。但不能修饰属性,构造器,私有方法,静态方法,final修饰的方法

抽象思维,是人类思维达到高级阶段产生的一种能力,例如,当小孩子思维尚未成熟时,他们只能掌握具体概念,他们在学习代词“你、我、他”时往往遇到困难,因为代词具有较高的抽象性。
抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。
对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了。

1)抽象类

抽象类的定义语法:访问修饰符   abstract   class   A{   }

一旦A类被抽象了就不能造对象了,但一定还有构造器便于子类造对象用,开发中都会提供抽象类的子类来造对象。 

2)抽象方法

 抽象类的定义语法:访问修饰符   abstract   void   A( ) ;

注意:没有花括号,没有方法体

3)抽象类,抽象方法说明

>包含抽象方法的类一定是抽象类,单抽象类中可以没有抽象方法

>子类重写父类中所有的抽象方法后方可实例化,若没有重写或重写完则子类也是抽象类需要用abstract来修饰

二,接口

关键字:interface 接口, implements  实现

面向接口编程就是先把客户的业务逻辑线提取出来,作为接口,业务具体实现通过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,替换该接口的实现类就可以完成需求,不需要改写现有代码,减少对系统的影响。

优点:降低代码间的耦合性易于程序的扩展,提高了程序的可扩性性,提高了程序的可维护性

定义接口的语法:

[访问修饰符]  interface 接口名   extends 父接口1,父接口2,…{

                    //常量定义

                    //方法定义

}

类实现接口的语法:

[访问修饰符]  class  类名  extends  父类名 implements  接口1,接口2,…{

                    //类成员

}

1)接口特性

接口的命名规则与类相同。如果修饰符是public,则该接口在整个项目中可见;如果省略修     饰符,则该接口只在当前包可见。
接口中可以定义常量,不能定义变量。接口中的属性都会自动用public static final 修饰,即接口中的属性都是全局静态常量。
接口中方法自动用public  abstract修饰,接口中所有方法都是抽象方法。
接口不能实例化,接口中不能有构造方法。
接口直接可以通过extends实现继承关系,一个接口可以继承多个接口,但是接口不能继承类。
接口的实现类必须实现接口的全部方法,否则必须定义为抽象类。 

 

 2)类图展示

 

3)抽象类和接口的联系和区别? 

相同点:

1.代表系统的抽象层
2.都不能被实例化
3.都能包含抽象方法:用于描述系统提供的服务,不必提供具体实现

不同点:

1.在抽象类中可以为部分方法提供默认实现,而接口中只能包含抽象方法
2.抽象类便于复用,接口便于代码维护
3.一个类只能继承一个直接的父类,但可以实现多个接口

 

 4)接口在说明

>与类属于同一级别,可以实现多继承效果父类只能有一个,但接口可以有多个

>JDK7及以前接口只能定义(public  static  final)修饰的全局常量和(abstrack)修饰的抽象方法。

JDK8以后接口还可以定义静态方法,和默认方法 

>开发中接口通过让类去实现使用,如果实现类实现了接口中的所有抽象方法,则就可以实例化

 class A extend B implements C , D , E

A类继承B类实现C,D,E接口

>可以通过:接口 . super . 方法    在子类实现类中调用接口中的方法

5,案例

package com.bdqn.lianxi;

public class jiekou {//测试类
    public static void main(String[] args) {
        Computer computer = new Computer();
        //创建接口非匿名实现类的非匿名对象
        printer prin = new printer();
        computer.transferDate(prin);
        //创建接口非匿名实现类的非匿名对象
        Flash flash = new Flash();
        computer.transferDate(flash);
        System.out.println("**************************");
        flash.start();
        flash.stop();
        //创建接口非匿名实现类的匿名对象
        computer.transferDate(new printer());
        //创建接口的匿名实现类的非匿名对象
        USB phone = new USB() {
            @Override
            public void start() {

                System.out.println("手机开始工作");
            }

            @Override
            public void stop() {
                System.out.println("手机结束工作");
            }
        };
        computer.transferDate(phone);
        //创建接口的匿名实现类的匿名对象
        computer.transferDate(new USB() {
            @Override
            public void start() {
                System.out.println("mp3开始工作");
            }

            @Override
            public void stop() {
                System.out.println("mp3结束工作");
            }
        });


    }


//___________________________________________________________________________________________

    static class Computer{//电脑
        public void transferDate(USB usb){
            usb.start();

            System.out.println("具体的传输数据的细节");

            usb.stop();
        }
    }


//___________________________________________________________________________________________

    interface USB{//接口
        void start();

        void stop();
    }

    //___________________________________________________________________________________________
    static class Flash implements USB{//实现接口-----优盘

        @Override
        public void start() {
            System.out.println("优盘开启工作");
        }

        @Override
        public void stop() {
            System.out.println("优盘结束工作");
        }
    }

//___________________________________________________________________________________________

    static class printer implements USB{//打印机

        @Override
        public void start() {
            System.out.println("打印机开始工作");
        }

        @Override
        public void stop() {
            System.out.println("打印机结束工作");
        }
    }


}

 

三,异常 

1)异常种类,常见异常类型

Thowable-----------------------------------------------------------------------

              Error------------------------------------------------------------------

              Exception-----------------------------------------------------------

                              checked-------------------(编译时异常)--------

                              unchecked---------------(运行时异常)-------------

常见异常类型

 2)处理异常

抓抛模型

2.1  ;  try - cath - finally

关键字 , try - cath - finally

 /* try {
        可能出现异常的代码
    }catch(异常类型  变量名){
        处理异常方式
    }catch(异常类型  变量名){
        处理异常方式
    }catch(异常类型  变量名){
        处理异常方式
    }finally{
        一定会执行的代码
    }*/

 异常类型如果有父子类关系要求子类必须声明在父类上面

catch中处理异常常写       变量名 . printstackTrace()        变量名 . getMessage()

2.2 ;throws     throw

关键字:throws(抛出异常)   throw(制造异常)

格式

 public void num()throws (异常类型),(异常类型),...........,(异常类型){
        方法体
    }

 谁调这个方法就抛给谁

public void setSex(String sex) throws Exception {
		if ("男".equals(sex) || "女".equals(sex))
			this.sex = sex;
		else {
			throw new Exception(“性别必须是\"男\"或者\"女\"!");
		}
	}

throw 通常跟 throws一起用

2.3自定义异常类

/**
 * 自定义异常类
 */
public class AgeException extends Exception{//AgeException继承与一个异常类

    public AgeException() {
    }

    public AgeException(String message) {
        super(message);
    }
}

三,重写方法抛异常

>子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型

>如果父类中被重写的方法没有抛异常(throws)则子类中重写的方法也不能用(throws)抛异常如果出现异常就需要用try - catch来解决

>如果几个类是递进关系先都throws抛出来在try - catch

 

ATM火控电容改造实战:提升速凌无刷电机动力与系统稳定性 在嵌入式系统与电机驱动领域,电源完整性是保障电路稳定运行的核心基础。其核心原理在于通过合理的电容网络设计,为负载提供瞬时大电流并滤除高频噪声,从而维持电压稳定。这项技术的核心价值在于能显著提升系统的动态响应能力与可靠性,避免因电压跌落导致微控制器复位或功率器件过应力。典型的应用场景包括无人机电调、机器人关节驱动以及各类需要快速响应的伺服系统。本文聚焦于水弹发射器ATM火控系统的硬件迭代,通过详解电容的选型、布局与焊接流程,特别是针对速凌五代无刷电机的高启动电流特性,系统性地阐述了如何通过强化电源储能与芯片去 阅读详情

相关推荐

Ubuntu 22.04 LTS下Xenomai 3.3实时内核配置全攻略(附常见错误排查)

本文详细介绍了在Ubuntu 22.04 LTS系统上配置Xenomai 3.3实时内核的完整流程,包括环境准备、内核补丁应用、编译优化及常见错误排查。特别针对工业自动化和机器人控制场景,提供了性能优化建议和故障解决方案,帮助开发者实现毫秒级精度的实时任务处理。

weixin_29268385的博客 464

Java再学习,重要知识点的总结(隐藏技巧、面向对象思想、抽象类、接口、异常等)

Java再学习一些知识点总结

影龙武的博客qq_43594119 415

忆阻器(二)——忆阻模拟器

除了真实的器件,我们也可以用运放和乘法器来搭忆阻模拟器。这节将介绍数学模型、matlab仿真及multisim仿真。 一、数学模型 忆阻分为磁控和荷控两种,这里介绍三次非线性磁控忆阻模型: {I=W(φ)VW(φ)=a+3bφ2dφdt=V \begin{cases} I=W(\varphi)V \\ W(\varphi)=a+3b \varphi ^2\\ \frac{d \varphi }{dt}=V \end{cases} ⎩⎪⎨⎪⎧​I=W(φ)VW(φ)=a+3bφ2dtdφ​=V​ 这里的WWW

http://www.icfgblog.com/ 1万+

Java:面向对象概念(抽象类,接口,多态,异常)

抽象类 概念:在继承的层次结构中,每个新子类都使类变得越来越明确和具体。如果从一个子类追溯到父类,类就会变得更通用,更加不明确。类的设计应该确保父类包含它的子类的共同特征。 注意:抽象类不可以用于创建对象。抽象类可以包含抽象方法,这些方法将在具体的子类中实现。 ...

CODE 297

gtsam官方文档: The new IMU Factor学习笔记

gtsam官方文档:The new IMU Factor 本文为gtsam imu预积分文档学习笔记,为gtsam基于切向量实现的imu预积分的理论基础。 导航状态 定义导航状态为 Xbn={Rbn,Pbn,Vbn}X^n_b=\{R^n_b,P^n_b,V^n_b\}Xbn​={Rbn​,Pbn​,Vbn​} 上角标n:导航(navigation)坐标系 下角标b:载体(body)坐标系 下文均省略上下标 矢量场与微分方程 对于导航问题我们用如下微分方程描述 X˙(t)=F(t,X)\dot X(t)

南柯一梦的博客 1608

Ubuntu 26.04 本地安装 GitLab CE 完整教程(非 Docker 方式)

本文详细介绍了在Ubuntu 26.04系统上通过Omnibus包安装GitLab CE的完整流程。主要内容包括:环境准备(系统要求、依赖安装)、配置清华镜像源、执行安装命令、修改配置文件、服务管理命令以及常见问题解决方法。文章特别强调了内存要求(建议4GB以上)、首次登录密码获取、HTTPS安全配置等关键点,并提供了性能优化建议和安全设置指导。相比Docker方式,Omnibus安装具有性能更好、管理方便等优势,适合需要私有化部署GitLab的场景。

1372

Java基础——面向对象——继承、抽象类、接口、多态、包、内部类、异常等

第一讲  继承   1、继承:   当多个类拥有相同的功能时,那么这些类不需要每个都写这些相同的功能,只需要把相同功能抽到 一个单独的类中,继承这个类就能获得这些相同的功能; (1)继承的体系结构:就是对要描述的事物进行不断的向上抽取,就出现了体系结构。 要了解这个体系结构中最共性的内容,就看最顶层的类。要使用这个体系的功能,就用最底层的类创建对象 (2)好处: A、提高代码复用

hufankkkk的博客 753

centos7下100T存储扩容(LVM)至150T

查看新增磁盘情况lsblk,fdisk -l [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 4.2G 0 rom vda 252:0 0 80G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2

tiyager的博客 1025

java面向对象(抽象类、接口、设计模式、内部类、异常)

一、抽象类 当继承关系中,父类的方法只有重写才有意义时,可以声明为抽象方法,抽象方法的类就必须是抽象类。 特点: 抽象类不一定有抽象方法,有抽象方法的类一定是抽象类 抽象类有构造方法,但是不能实例化对象,供子类调用初始化父类数据的。 抽象类的子类一定要实现抽象类的抽象方法,除非子类也是抽象类 使用格式: abstract关键修饰的类就是抽象类,有abstract修饰的方法就是抽象方法。 public abstract class Animal{} 二、接口 格式: interface关键字定义接口 publ

彩色大白兔 207

ColorOS13系统账户锁与密码锁破解全指南:从恢复模式到激活绕过

本文针对ColorOS13系统用户,详细解析了忘记锁屏密码(数字/图案锁)和遭遇OPPO账户锁(激活锁)的合法解决方案。核心是通过官方恢复模式进行格式化操作清除锁屏密码,并强调账户锁需通过密码找回或官方售后等正规途径解除。文章旨在帮助设备合法所有者恢复使用权,并提供了安全操作指南与数据备份建议。

weixin_28304023的博客 965

20 Embedding 与向量检索:语义为什么能变成距离

Embedding 是 RAG 语义检索的数学基础。本文用工程视角讲清文本如何变成向量,为什么语义相近会表现为距离相近,Top-K 检索如何工作,以及在模型选择、同模型约束、精确匹配和召回评估上的常见坑。

老于的笔记的专栏 6203

Java基础---面向对象---抽象类与接口与异常

1,抽象类 抽象类其实就是相当于“是不是”, 比如:小狗是动物,那么小狗就是继承父抽象类动物,再比如:黑白打印机的是打印机,那么黑把打印机就是继承抽象类打印机 一个类中如果存在抽象方法,那么他必须是抽象类 抽象类VS普通类 抽象类不能被直接实例化,可以创建一个引用变量,其类型是一个抽象类,指向非抽象的子类实例 普通类可以被实例化 抽象方法必须存在与抽象类当中,抽象类其实就是相当于“是不是”,比如:小狗是动物,那么小狗就是继承父抽象类动物,再比如:黑白打印机的是打印机,那么黑把打印机就是继承抽象

MUYUFANSHENXUE的博客 276

《UDS协议从入门到精通》系列——图解0x14:清除诊断信息

图解0x14:清除诊断信息,简洁易懂,迅速上手!

车载系统攻城狮 4825

java(五)继承和多态,抽象类与接口,异常(javaSE完)

继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加新功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。共性的抽取,实现代码复用。父类:又叫基类,也叫超类子类:又叫派生类修饰符 class 子类 extends 父类 {// .. . }父类int age;System.out.println(name + "正在吃饭");

Cheer_RIO的博客 349

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java包、抽象类、接口、内部类与异常类、包装类、String类(Buffer、Builder)、BigDecimal类——第二周预习

用关键字interface定义一个接口......在一个类中定义的类就是内部类,而包涵内部类的类成为内部类的外嵌类。// 内部类......匿名类就是一个类(接口)的子类,不能用匿名类声明对象,但可以直接用匿名类创建一个对象。new 类名/接口(){//new 类名() :代表继承这个类//new 接口名() :代表实现这个方法可以拓展Exception或RuntimeException类定义自己的异常类一个方法声明时可以用throws。

FPS_TamamoCross的博客 1560

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

面向对象回顾(异常(try、catch、throw、throws和finally)、接口和抽象类、面向对象特征、泛型(extends/super))

1. 异常 1.1 JAVA语言如何进行异常处理 Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。 在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。 当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。 1.2 关键字:throws,throw,try,cat...

Zhxin606a的博客 529

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

学习java第二周——面向对象、堆栈方法区、代码块、抽象类、接口和异常

面向对象 2020年9月7日星期一 概述:面向对象(Object Oriented)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。 面向对象是相对于面向过程来讲的,指的是把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。 面向过程到面向对象思想层面的转变: 面向过程关注的是执行的过程,面向对象关注的是具备功能的对象。 面向过程到面向对象,是程序员思想上 从执行者到指挥者的转

yxmoar的博客 403

Java面向对象程序设计笔记 • 【目录】

持续更新中… 我的大学笔记>>> 章节 内容 实践练习 Java面向对象作业目录(作业笔记) 第1章 Java面向对象笔记 • 【第1章 面向对象】 第2章 Java面向对象笔记 • 【第2章 面向对象进阶】 第3章 Java面向对象笔记 • 【第3章 继承和多态】 第4章 Java面向对象笔记 • 【第4章 抽象类和接口】 第5章 Java...

杨明金的博客 1万+

(面向对象、JAVA语言特性、继承、抽象类、接口、枚举、异常处理、IO流)——阶段性复习

作为一名学生,这都是我平时在学习中遇到的一些问题,不清楚不明白的地方,总结给大家的,希望能够帮助到大家 ???????????????? 一、类的基础掌握 1.类的基本概念 类的概念:类将一类事物的特征(类的属性)与行为(方法)抽象的封装起来 2.定义类 类的定义与构成:修饰符 class 类名{} // 举例子 public class Dog{ } 修饰符:修饰类的修饰符有public、abstract和fi...

Pasby的博客 365

面向对象(二):抽象类,内部类,接口,异常

Java面向对象(二) 抽象类 abstract 修饰的方法和类为抽象类和抽象方法 抽象类可以没有抽象方法,有抽象方法的类必须声明为抽象类 继承抽象类的子类必须实现抽象类的方法 抽象类不能使用new ,必须靠子类实现 抽象类中可以有普通方法 抽象类可以有构造方法,构造方法作用可以初始化变量,另一个是实例化变量。抽象类不能实例化,但可以初始化 接口 接口只有抽象方法的定义,定义一组规则。声明类的关键字:class.声明接口的关键字:interface 接口中的所有方法都是抽象的,默认有public ab

zxh1996的博客 173

Java基础笔记-继承、抽象类、接口、多态、内部类、异常

继承:多个类具有相同的属性和行为时,将这些内容单独抽取到一个单独的类中,那么多个类无需再定义这些属性和行为,直接继承那个类即可 1)  多个类称为子类,单独的类称为父类或者超类 2)  子类可以继承父类中非私有的属性和方法 3)  通过extends关键字让类与类之间建立继承关系 4)  继承的出现提高了代码的复用性,让类与类之间产生了关系,为多态的出现提供了前提 5

javaqun的博客 444

java面向对象与异常

初识面向对象方法回顾和加深对象的创建和分析面向对象的三大特性抽象类和接口内部类和oop实战初识面向对象面向过程&面向对象: 类=属性+方法对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍需要面向过程的思路去处理面向对象编程(oop)面向对象编程本质:以类的方式组织代码,以对象的形式封装数据抽象三大特性:封装,继承,多态 方法回顾和加深 方法的定义:方法的调用:(静态方法和非静态方法)非静态方法直接通过类名调用(类名.方法)非静态方法要

qq_74146366的博客 1348

java面向对象最全入门笔记(通俗易懂,适合初学者)

一、为什么使用面向对象 前言: 面向对象的三大特征 封装 (Encapsulation) 继承 (Inheritance) 多态 (Polymorphism) 编程思想: 面向过程:做某件事情都需要自己亲历亲为,按照步骤去完成 面向对象:做某件事情不需要自己亲历亲为,只需指定特定的对象去完成即可。 1.现实世界就是由对象组成的,如下图,万物皆对象(不是单指女朋友也不是单指男朋友哈~) 2.面...

javaboy_yl 1万+

专栏总结java3:类接口和异常

专栏总结java3:类接口相关

黄规速博客:学如逆水行舟,不进则退 633

Java之面向对象

面向对象 一、基础概念 1、什么是面向对象 万事万物皆可是对象,而了解对象的详细信息,并关注它,这个过程就叫面向对象。面向一个具体的事物进行操作,便面向对象编程。                                                                      因为你不会Java啊,来Java中new一个呀,不就有了? 2、Java中的对象 用来描述一个实体,通常由一组属性和对这组属性进行的操作组成。 对象的产生:通过对类的实例化。 对象的”一生“:生成、使用、

qq_43325476的博客 1701

二、Java面向对象

对象是一个具体的个体,通过抽象的类型这一概念进行创建,真实的参与了 Java 程序的运行

m0_56292849的博客 960
上一篇: 面向对象----------------------------多态
下一篇: Java基础常用关键字
lhjava1234
博客等级 码龄4年 4粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值