首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java基础小结(二)

也是因为这个原因,通常在设计阶段决定要不要设计抽象类。 父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。...声明抽象方法会造成以下两个结果: 1、如果一个类包含抽象方法,那么该类必须是抽象类。 任何子类必须重写父类的抽象方法,或者声明自身为抽象类。 2、继承抽象方法的子类必须重写该方法。...重写接口中声明的方法时,需要注意以下规则: 类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。...类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。 如果实现接口的类是抽象类,那么就没必要实现该接口的方法。...在实现接口的时候,也要注意一些规则: 一个类可以同时实现多个接口。 一个类只能继承一个类,但是能实现多个接口。 一个接口能继承另一个接口,这和类之间的继承比较相似。

68110

Java学习笔记 (多态、接口、抽象类)

,只能被继承,可以通过向上转型完成对象实例 abstract定义抽象方法,不需要具体实现 包含抽象方法的类是抽象类 抽象类中可以没有抽象方法 子类如果没用重写父类所有的抽象方法,则也要定义为抽象类 abstract...一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。..., 则必须设置为 抽象类 接口可以实现多继承, 即一个子接口可以同时继承多个父接口 一个类可以继承自一个父类, 同时实现多个接口 当一个类同时实现多接口, 且其中同时具有相同方法时, 实现类需重 写该方法...接口与类的区别 接口不能用于实例化对象。 接口没有构造方法。 接口中所有的方法必须是抽象方法。 接口不能包含成员变量,除了 static 和 final 变量。 接口不是被类继承了,而是要被类实现。...//当类实现接口时,需要去实现接口中的所有抽象方法,否则需要将类设置为抽象类 public abstract void network(); //JDK1.8新增的 //可以在实现类中重写

24030
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    菜鸟教程 Java 学习笔记 (基础教程)

    一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。 抽象类可以包含抽象方法和非抽象方法。...任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。 如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。...任何子类必须重写父类的抽象方法,或者声明自身为抽象类。 继承抽象方法的子类必须重写该方法。否则,该子类也必须声明为抽象类。...重写接口中声明的方法时,需要注意以下规则: 类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。...类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。 如果实现接口的类是抽象类,那么就没必要实现该接口的方法。

    1.2K10

    Java语言中的面向对象特性总结

    this—–用在一个方法中引用当前对象,它的值是调用该方法的对象。返回值须与返回类型一致,或者完全相同,或是其子类。当返回类型是接口时,返回值必须实现该接口。 ...抽象方法    抽象类必须被继承,抽象方法必须被重写。...抽象方法只需声明,无需实现;抽象类不能被实例化,抽象类不一定要包含抽象方法。若类中包含了抽象方法,则该类必须被定义为抽象类。 ...若一个类继承了一个抽象类,则抽象类的抽象方法必须被实现,否则子类必须声明为abstract.   2....接口    接口是抽象类的一种,只包含常量和方法的定义,而没有变量和方法的实现,且其方法都是抽象方法。

    44520

    第十一天 面向对象-接口多态【悟空教程】

    C继承A和B同时拥有AB的方法。 类可以在继承一个类的同时,实现多个接口。 子类继承父类与接口中的方法,当父类和接口的方法相同时,子类只需要实现一次即可。...当一个类实现了接口时,必须实现其所有的方法,否则这个类会保留一些抽象方法,此时,该类包含了抽象方法,便必须定义为一个抽象类。...比如:接口中有三个方法,你实现了两个方法,那么还包含了一个抽象方法,那这个类也必须是一个抽象类。 接口里面可以没有任何方法。...缉毒猪 implements 缉毒{ public void 缉毒() { } } 1.5.1 接口和抽象类的相同点 都位于继承的顶端,用于被其他类实现或继承; 都不能直接实例化对象; 都包含抽象方法...,其子类都必须覆写这些抽象方法; 1.5.2 接口和抽象类的区别: 抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;接口只能包含抽象方法; 一个类只能继承一个直接父类(可能是抽象类)

    52540

    18、面向对象基本原则及UML类图简介

    c、如果一个非抽象类是某个抽象类的子类,那么它必须重写父类的abstract方法,即在子类中将abstract方法重新声明,但必须去掉abstract修饰符,同时要保证声明的方法名字、返回类型、参数个数和类型与父类的...尽管抽象类不能用new运算符创建对象,但其非abstract子类必须要重写全部abstract方法,这样一来,就可以让抽象类声明的对象成为其子类对象的上转型对象,并调用子类重写的方法。...b、接口由类去实现,即一个类如果实现一个接口,那么它必须重写接口中的abstract方法,即将abstract方法重新声明,但必须去掉abstract修饰符,同时要保证声明的方法名字、返回类型、参数个数和接口中的方法完全相同...接口回调是指可以把实现接口的类的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口中的方法,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象方法的接口回调...继承复用缺点:1)子类从父类继承的方法在编译时就确定下来了,所以无法在运行期间改变从父类继承的方法的行为;2)子类和父类的关系是强耦合关系,即当父类的方法的行为更改时,必然导致子类发生变化;3)通过继承进行复用也称

    1.3K00

    【JAVA】抽象类和接口

    抽象方法的语法格式如下: abstract 返回值类型 方法名称(参数列表); 当一个类包含了抽象方法,该类就是抽象类。抽象类和抽象方法一样,必须使用abstract 关键字进行修饰。...抽象类的定义规则 (1)包含抽象方法的类必须是抽象类 (2)声明抽象类和抽象方法时都要使用== abstract== 关键修饰。 (3)抽象方法只需要声明而不需要实现。...(4)如果一个非抽象类继承了抽象类之后,那么该类必须重写抽象类中的全部抽象方法。...实现类通过== implements== 关键字实现接口,并且实现类必须重写接口中所有的抽象方法。需要注意的是,一个类可以同时实现多个接口,实现多个接口时,多个接口名需要使用英文逗号(,)分隔。...定义了 Dog 类并实现了 Action 接口,这样 Dog 类就必须同时重写Animal 接口中的抽象方法 info()、Color 接口中的抽象方法 black()和 Action 接口中的抽象方法

    85620

    Scala专题系列(六) : Scala特质

    在 Java 8 诞生之前, Java 未提供用于定义和使用这类可重用代码的内置机制。为此, Java必须使用特定的方法进行复用某一接口的实现代码。 Java 8 做出了改变。...Scala和Java一样不允许类从多个超类继承,在Java中类只能扩展 自一个超类,它可以实现多个接口,但接口中只能包含抽象方法,不能包含字段 Scala提供的"特质"类似于java中的接口, 但又有所不同...,特质可以同时拥有抽象方法和具体方法,而类可以实现多个特质,同时这也很好的解决了java接口的问题 Scala特质可以如同java接口那样工作 举例: trait Logger{ def log...Logger已经被构造 5:SavingAccount(类) 特质中重写抽象方法 前面我们提到,在类中实现某个特质的方法时,是不需要加override的,但是在特质中,如果要重写父特质的方法时,需要加上...类型,而下面代码 val h = new Home with LoggerException 上面代码是不合法的,因为Home不是Exception的子类型 同时,特质还可以处理结构类型,这种类型只给出类必须拥有的方法

    70020

    Java基础系列4:抽象类与接口的前世今生

    使用抽象类有以下几点需要注意: 1、当使用abstract修饰类时,表明这个类时抽象类,不能实例化,只能被继承;当使用abstract修饰方法时,表明这个方法必须由子类去实现。...2、final修饰的类不能被继承,final修饰的方法不能被重写,因此final和abstract不能同时出现。...5、abstract修饰的方法没有方法体,必须被之类重写才有意义,所以抽象方法不能用private修饰,也就是private和abstract不能同时使用。...当使用接口来声明引用类型变量时,这个引用类型变量必须引用到其实现类的对象。除此之外,接口的主要用途就是被实现类实现。归纳起来,接口主要有如下用途。...接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。

    49210

    Java抽象类与oop三大特征

    它定义了一组抽象的方法,至于这组抽象方法的具体表现形式由派生类来实现。同时抽象类提供了继承的概念, 它的出发点就是为了继承,否则它没有存在的任何意义 。...使用抽象类时应注意一下几点: 1、包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法 2、如果一个非抽象类继承了抽象类,则非抽象类必须实现抽象父类的...通常由子类实现 6、final 和 abstract 是否可以同时修饰一个方法,因为用final修饰后, 修饰 类 代表不可以继承 , 修饰 方法 不可重写, abstract 修饰类就是用来被继承的,...继承的特点: 1、子类拥有父类非private的属性和方法 2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展 3、子类可以用自己的方式实现父类的方法( 方法重写 ) 4、 构造函数不能被继承 5...对于前半句的意思就是:当父类变量引用子类对象时,在调用成员函数时,应该调用向子类的成员函数,但前提是此函数时被子类重写的函数。 A B C D的继承关系如下: ?

    80440

    Java基础(十一):抽象类、接口、内部类

    ,但是有抽象方法的类必定是抽象类 理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设计 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错...{ // 重写接口中所有抽象方法【必须】,当然如果实现类是抽象类,那么可以不重写 // 重写接口中默认方法【可选】 } 接口中,有多个抽象方法时,实现类必须重写所有抽象方法。...:类名.super.方法名() 接口冲突(左右为难) 当一个类同时实现了多个父接口,而多个父接口中包含方法签名相同的默认方法时,怎么办呢?...//(2)完全重写 System.out.println("跟康师傅学Java"); } } 当一个子接口同时继承了多个接口,而多个父接口中包含方法签名相同的默认方法时,怎么办呢...当子类同时实现多个接口,而多个接口存在相同同名常量 此时在子类中想要引用父类或父接口的同名的常量或成员变量时,就会有冲突问题 父类和父接口: public class SuperClass {

    14310

    Java匹马行天下之JavaSE核心技术——面向对象

    //实例 public final class Test {    // 类体 } 注意: 当final修饰类时,当前类不能被继承; 当final修饰方法时,该方法不能被重写; 当final修饰变量时...抽象方法不能被声明成 final 和 static。 任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。 如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。...该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。...; 重写定义: 子类重新声明从父类继承来的方法,称为方法重写; 方法重写时,方法的声明部分要和父类保持一致(返回值类型,方法名,参数); 重写方法的访问权限要大于等于父类中方法的访问权限; 子类重写父类方法...,使用implements关键字,一个类实现一个接口,必须重写该接口中所有的抽象方法; 一个类可以实现多个接口,每个接口名用英文的逗号隔开,该类中必须重写所有已实现接口中的抽象方法; 接口可以继承接口,

    47630

    Java匹马行天下之JavaSE核心技术——面向对象

    ,那么子类中需要要重写所有抽象父类的所有抽象方法; 抽象类也可以继承非抽象类,同时继承了父类的所有非私有的属性和方法; 实例 abstract class Caravan{ private...任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。                               如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。...该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。...;  重写定义: 子类重新声明从父类继承来的方法,称为方法重写; 方法重写时,方法的声明部分要和父类保持一致(返回值类型,方法名,参数); 重写方法的访问权限要大于等于父类中方法的访问权限...abstract关键字; 接口可以被实现,使用implements关键字,一个类实现一个接口,必须重写该接口中所有的抽象方法; 一个类可以实现多个接口,每个接口名用英文的逗号隔开,该类中必须重写所有已实现接口中的抽象方法

    80930

    java_抽象类、接口、多态的使用

    格式为:修饰符 abstract 返回值类型 方法名 (参数列表); 抽象类的使用 继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。...实现的动作类 似继承,格式相仿,只是关键字不同,实现使用 implements 关键字。 非抽象子类实现接口: 1. 必须重写接口中所有抽象方法。 2....} 接口中,有多个抽象方法时,实现类必须重写所有抽象方法。...如果抽象方法有重名的,只需要重写一 次。 接口的多继承 一个接口能继承另一个或者多个接口,这和类之间的继承比较相似。接口的继承使用 extends 关键字,子接口继 承父接口的方法。...当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的是子类重写 后方法。

    40010

    Java面经——SE基础

    多态有三种实现形式: 继承:在多态中必须存在有继承关系的子类和父类 重写/实现接口:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法 向上转型:在多态中需要将子类的引用赋给父类对象,...从某种意义上讲接口是一种特殊的抽象类。 抽象类中可以包含静态方法,在 JDK1.8 之前接口中不能不包含静态方法,JDK1.8 以后可以包含。...接口的实例变量默认是final类型,不可修改,而抽象类不一定。 一个类可以实现多个接口,但只能继承一个抽象类,接口不可以实现接口,但可以继承接口,并且可以继承多个接口。...其实是不一定的,网上很多文章都说必须同时重写,这是建立在设计合理的基础上。...但是在实际编码时又要求同时重写,因为你无法预测该类是否会应用到含有哈希表的类,所以通常会有“重写equals时必须重写hashCode方法”的说法。

    58241

    设计模式六大原则(2):里氏替换原则

    新功能P由类A的子类B来完成,则子类B在完成新功能P2的同时,有可能会导致原有功能P1发生故障。 解决方案:当使用继承时,遵循里氏替换原则。...继承包含这样一层含义:父类中凡是已经实现好的方法(相对于抽象方法而言),实际上是在设定一系列的规范和契约,虽然它不强制要求所有的子类必须遵从这些契约,但是如果子类对这些非抽象方法任意修改,就会对整个继承体系造成破坏...如果非要重写父类的方法,比较通用的做法是:原来的父类和子类都继承一个更通俗的基类,原有的继承关系去掉,采用依赖、聚合,组合等关系代替。...里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义: 1、子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。 2、子类中可以增加自己特有的方法。...3、当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。 4、当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

    57090

    1、Java从入门到精通

    多态分为编译时多态和运行时多态。编译时多态 主要是指方法的重写,根据参数列表的不同来区分不同的函数,通过编辑之后会变成两个不同的函数。运行时多态是动态的,通过动态绑定来实现的的。...必要条件: a.要有继承;b.要有重写;c.向上转型,父类引用指向子类对象(这样才能调用调用父类的方法和子类的方法)。 多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。...f.当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象类。 g.一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承。...包含抽象方法的类必须被声明为抽象类。...,需要依靠子类采用向上转型的方式处理; (3)抽象类必须有子类,使用extends 继承,一个子类只能继承一个抽象类; (4)子类(如果不是抽象类)则必须覆写抽象类中的全部抽象方法(如果子类没有实现父类的抽象方法

    80210

    第十天 面向对象-继承抽象类【悟空教程】

    (注:在学习完多态和抽象类后我们会对方法重写有更深的理解) 1.4.2 方法重写格式 子类中定义与父类一样的方法便将父类的方法重写了。此时,当创建子类对象,调用方法时,会调用子类重写后的方法。...参数列表必须相同 返回值为基本类型时必须相同 返回值为引用类型时相同或子类小(了解) /* * 方法重写的注意事项 * 子类重写方法时,在声明前加@Override可检测该方法是否为重写的方法...: * 子类必须重写父类的所有抽象方法,如果有抽象方法没有重写,就相当于将抽象方法继承过来,子类里面有抽象方法, * 有抽象方法的类必须是抽象类,子类也得定义为抽象类 * * 抽象类不一定包含抽象方法...抽象类中的非抽象方法不用重写,其他必须重写,接口的方法必须重写; 接口和抽象类中只有方法名,没有定义的,如果你不定义 也就是空方法,接口就是为了弥补java不能多重继承,接口针对的是对象而不是实现。...方法重写是要注意权限的问题,子类中的权限不能小于父类的权限,当父类的权限为private时,子类无法继承。也就无法产生所谓的重写。

    70160

    【深入浅出C#】章节 5: 高级面向对象编程:接口和抽象类

    这些普通方法提供了抽象类的默认行为,可以在派生类中直接使用或重写。 可以包含字段和属性:抽象类可以包含字段和属性,用于存储和访问对象的状态。这些字段和属性可以被派生类继承和使用。...强制派生类实现抽象方法:派生类必须实现抽象类中的所有抽象方法,否则派生类也必须声明为抽象类。这样可以确保派生类具有必要的行为和功能,并在编译时进行验证。...2.3 抽象类的继承和抽象方法的实现 当一个类继承了抽象类时,它必须实现抽象类中的所有抽象方法,除非它自身也被声明为抽象类。...抽象类提供了默认的实现,可以减少代码的重复性,同时通过继承来实现代码的重用。 使用接口:当需要定义一组行为的契约,让不同的类以相同的方式进行交互时,可以使用接口。...这样,派生类可以继承抽象类并重写或扩展其中的方法,从而减少代码的重复性,实现代码的复用和封装。 定义抽象方法:抽象类可以包含抽象方法,这些方法只有声明,没有具体的实现。

    57221

    JDK1.9-接口

    1.1 概述 接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法...实现的动作类似继承,格式相仿,只是关键字不同,实现使用implements关键字 非抽象子类实现接口: 1.必须重写接口中所有抽象方法。 2.继承了接口的默认方法,即可以直接调用,也可以重写。...实现格式: ? 抽象方法的使用 必须全部实现,代码如下: 定义接口: ? 定义实现类: ? 定义测试类: ? 默认方法的使用 可以继承,可以重写,二选一,但是只能通过实现类的对象来调用。...并且,一个类能继承一个父类,同时实现多个接口。 实现格式: ? 小贴士 [ ]: 表示可选操作。 抽象方法 接口中,有多个抽象方法时,实现类必须重写所有抽象方法。...优先级的问题 当一个类,既继承一个父类,又实现若干个接口时,父类中的成员方法与接口中的默认方法重名,子类就近选择执 行父类的成员方法。代码如下: 定义接口: ? 定义父类: ? 定义子类: ?

    47620
    领券