抽象类

Java基础-抽象类和接口

扶醉桌前 提交于 2020-01-06 17:13:30
前言 在面试题中经常会出现这样抽象类和接口比较的题目,那么什么是抽象类?什么是接口呢?还有它们有什么区别呢?在讨论以上问题之前我们先来看一下抽象类和接口的特征吧。 抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的。如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类。比如new Animal(),我们都知道这个是产生一个动物Animal对象,但是这个Animal具体长成什么样子我们并不知道,它没有一个具体动物的概念,所以他就是一个抽象类,需要一个具体的动物,如狗、猫来对它进行特定的描述,我们才知道它长成啥样。 在面向对象领域由于抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能实例化的。 实例 //创建abstract抽象类Animal public abstract class Animal { //创建抽象方法 dog public abstract void dog ( ) ; } //创建Dog类,继承Animal抽象类 public class Dog extends Animal { //重写父类Animal方法Dog(); @Override public void dog ( ) { // TODO Auto

C++ 基础知识复习(二)

▼魔方 西西 提交于 2020-01-05 04:24:21
异常处理部分: 23. 在c++的异常处理中,除了提供异常的关键字语法支持以外,其标准库中支持异常处理而封装异常类也很好的为应用程序中异常处理判断使用提供直接的帮助。C++语言中针对异常处理提供了三个关键字,分别为try、throw与catch。C++应用程序中通过这三个关键字实现机制组合来实现异常的处理。try体中可以直接抛出异常,或者在try体中调用的函数体中间接的抛出。注意catch是接thorw出来的数据的,数据类型上要兼容。 预处理及内存管理部分: 24. C语言提供的预处理功能有哪些: 答:宏定义,文件包含和条件编译。 25. include的使用方式: 答:include 如果包含的文件名在尖括号内,则为标准头文件,会在预定义的位置集进行查找。位置集可有环境变量或命令行修改。引号中为自定义头文件,查找始于源文件所在路径,一层层找直到系统文件目录。 26. 如何申请以及释放空间: 答:int *p; p=new int; *p=100; delete p; 注意如果要对这一内存地址进行操作,需要使用*号。 27. 什么是虚函数和纯虚函数: 答:虚函数用来建立抽象模型,从而达到方便系统扩展的目的,纯虚函数是指标明不具体实现的虚函数,是一种特别的虚函数。虚函数必须是基类定义的非静态函数,可以是protected活着public的。在一个类中,虚函数后面加上=0

java抽象类和接口

只愿长相守 提交于 2020-01-05 04:03:57
1.抽象类     抽象类在概念上描述的是抽象世界,抽象类刻画了公有行为的特征,并且通过继承机制传送给它的派生类。抽象类使用关键字abstract 修饰,语法如下: abstract class 类名{ 类体; }   抽象方法是指在抽象类中某些成员方法没有具体的实现,只有方法声明。抽象方法使用关键字abstract 修饰,格式如下:     public abstract 返回类型 方法名([参数列表]);   抽象类和抽象方法的具体规则如下:     1.用abstract 关键字修饰一个类时,该类叫做抽象类,用abstract类修饰一个方法时,该方法叫做抽象方法。     2.含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。     3.抽象方法只需声明,不需实现。     4.在抽象类中可以有数据成员,可以有零个或多个抽象方法,也可以由非抽象方法。     5.抽象类不能被实例化。     6.static、private、final 方法不能是抽象的。     7.final 类型的类不能包含抽象方法。     8.抽象类的子类必须实现父类中所有的抽象方法,否则,该类必须定义为抽象类。 2.接口    2.1接口的定义   接口是特殊的抽象类。接口的出现弥补了java只支持单继承的不足,它可以用来完成多继承的一些功能。在java中

Java抽象类和接口

落爺英雄遲暮 提交于 2020-01-05 04:00:51
抽象类和接口 一、抽象类和抽象方法 对于抽象类,首先需要介绍抽象方法,而抽象类因抽象方法的存在而存在 1.抽象方法   (1)必要性:    有些父类方法不确定如何写方法体,但是对于继承它的子类又必须用到这个方法。 需要用到抽象方法   例如:对于动物类,我们知道父类“动物”会叫,但是因为不同的动物叫的方法不同,而对于子类”狗“这个子类又必须用到“叫”这个方法。因此对于父类“动物”的“叫”方法不知道怎么去写。这里就用到抽象方法。   代码示例:  1 //抽象类讲解 2 public class test抽象类 { 3 public static void main(String[] args) { 4 Dog1 dog = new Dog1(); 5 dog.cry(); 6 } 7 } 8 9 abstract class Animal{ 10 String nameString; 11 int age; 12 //动物会叫,但是不知道怎么叫,设定为抽象方法 13 abstract public void cry(); 14 } 15 16 class Dog1 extends Animal{ 17 //因为父类中“叫”方法没有实现,这里一定要重写 18 public void cry(){ 19 System.out.println("狗叫"); 20 } 21 }   (2

JAVA的抽象类和接口

不问归期 提交于 2020-01-05 03:58:35
抽象类   在面向对象的概念中,所有的对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描述对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。    抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法 的访问方式和普通类一样。   由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通 常在设计阶段决定要不要设计抽象类。   父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。 在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口 抽象类的定义 在Java语言中 使用abstract class来定义抽象类 尽管类A是抽象类,但是它仍然可以有成员变量、成员方法和构造方法 抽象类不能被实例化 抽象类可以被继承 抽象方法 抽象方法的具体实现是由他的子类确定的 使用 Abstract来 声明抽象方法,抽象方法只包含一个方法名,而没有方法体 注意!   如果一个类包含抽象方法,那么该类必须是抽象类   任何子类必须重写父类的抽象方法,或者声明自身为抽象类 继承抽象方法的子类必须重写该方法。否则,该子类也必须声明为抽象类。最终,必须有子类实 现该抽象方法,否则,从最初的父类到最终的子类都不能用来实例化对象。 Final 关键字

Java面向对象抽象类关键字----abstract

放肆的年华 提交于 2020-01-04 20:42:02
Java面向对象中抽象类关键字(abstract)的基础运用 //abstract 抽象关键字! /* * 注意:abstract只能修饰类和方法! * 特点: * 1.抽象方法必须放在抽象类中 * 2.抽象方法省略{ },只需声明方法即可! * 3.抽象类--->被子类继承--->创建对象(其实就是抽象类不可以new对象) * 4.抽象类中可以有普遍方法,也可以有抽象方法 * 5.非抽象类继承类是,子类必须重写抽象勒种的抽象方法 */ 来让我们直观看一下抽象类怎么用~ package com.abs; //抽象类 public abstract class Player { public String name; //运动员的姓名属性 public void sleep() { System.out.println("来来来!一起睡觉!"); } // 抽象方法 public abstract void sports(); //用abstract时不需要身体 即{ } } package com.abs; public class PingPangPlayer extends Player { //子类必须事先父类的抽象方法 @Override public void sports() { System.out.println("好好学习,天天向上"); } } ​

接口

怎甘沉沦 提交于 2020-01-04 09:34:12
为什么使用接口 可以实现多个继承方便修改 理解接口是一种能力 接口有比抽象类更好的特性: 1.可以被多继承 2.设计和实现完全分离 3.更自然的使用多态 4.更容易搭建程序框架 5.更容易更换实现 接口 接口特性 接口不可以被实例化 实现类必须实现接口的所有方法 实现类可以实现多个接口 接口中的变量都是静态常量 Java中的接口 属性全都是全局静态常量 方法都是全局抽象方法 无构造方法 一个类可以实现多个接口,非抽象类实现接口时必须实现接口中的全部方法 抽象类利于代码复用,接口利于代码维护 使用接口 编写接口 interface 实现接口 implements 使用接口 编写接口名 实现接口名=new 实现接口名(); abstract class和interface有什么区别 1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。 2、抽象类要被子类继承,接口要被类实现。 3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现。 4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。 5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个类实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。 6

sealed、new、virtual、abstract与override 总结

五迷三道 提交于 2020-01-03 23:14:12
1. sealed——“断子绝孙” 密封类不能被继承。密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed修饰符必须始终与override一起使用。 即:密封类不会有子类,所以是“断子绝孙”。 2. new——“你是我的,我是我的” new关键字用于显式隐藏从基类继承的成员。也就是在使用派生类时调用的方式方法是new关键字新定义出来的方法,而不是基类的方法。 在不使用new修饰符的情况下隐藏成员是允许的,但会生成警告。使用new显式隐藏成员会取消此警告,并使用派生类新定义的方法。 即:好比是不用祖宗的东西,而是用自己创造(new)的东西。 3. virtual——“为了子孙后代” virtual关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称做虚成员。虚成员的实现可由派生类中的重写成员更改。 调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。 在默认情况下,方式是非虚拟的。非虚方法不能重写。 不能将virtual修饰符与一下修饰符一起使用:static、abstract和override。 除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。 在静态属性上使用virtual修饰符是错误的。 通过override修饰符的属性声明

sealed、new、virtual、abstract与override 总结

断了今生、忘了曾经 提交于 2020-01-03 23:13:39
1. sealed——“断子绝孙” 密封类不能被继承。密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed修饰符必须始终与override一起使用。 即:密封类不会有子类,所以是“断子绝孙”。 2. new——“你是我的,我是我的” new关键字用于显式隐藏从基类继承的成员。也就是在使用派生类时调用的方式方法是new关键字新定义出来的方法,而不是基类的方法。 在不使用new修饰符的情况下隐藏成员是允许的,但会生成警告。使用new显式隐藏成员会取消此警告,并使用派生类新定义的方法。 即:好比是不用祖宗的东西,而是用自己创造(new)的东西。 3. virtual——“为了子孙后代” virtual关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称做虚成员。虚成员的实现可由派生类中的重写成员更改。 调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。 在默认情况下,方式是非虚拟的。非虚方法不能重写。 不能将virtual修饰符与一下修饰符一起使用:static、abstract和override。 除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。 在静态属性上使用virtual修饰符是错误的。 通过override修饰符的属性声明

sealed、new、virtual、abstract与override

那年仲夏 提交于 2020-01-03 23:13:13
1. sealed——“断子绝孙” 密封类不能被继承。密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed修饰符必须始终与override一起使用。 即:密封类不会有子类,所以是“断子绝孙”。 2. new——“你是我的,我是我的” new关键字用于显式隐藏从基类继承的成员。也就是在使用派生类时调用的方式方法是new关键字新定义出来的方法,而不是基类的方法。 在不使用new修饰符的情况下隐藏成员是允许的,但会生成警告。使用new显式隐藏成员会取消此警告,并使用派生类新定义的方法。 即:好比是不用祖宗的东西,而是用自己创造(new)的东西。 3. virtual——“为了子孙后代” virtual关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称做虚成员。虚成员的实现可由派生类中的重写成员更改。 调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。 在默认情况下,方式是非虚拟的。非虚方法不能重写。 不能将virtual修饰符与一下修饰符一起使用:static、abstract和override。 除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。 在静态属性上使用virtual修饰符是错误的。 通过override修饰符的属性声明