精华内容
下载资源
问答
  • 抽象类中一定含有抽象方法
    千次阅读
    2020-06-11 09:20:14

    抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。
    如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过。

    抽象类可以没有抽象方法,甚至可以和普通类一样含有构造方法。当你要求不能创建某个类的实例,只能通过其他类继承这个类来使用时,就可以定义为抽象类。

    抽象类中可以没有抽象方法,也可以包含非抽象方法,但有抽象方法的类一定是抽象类。

    更多相关内容
  • 设计一个抽象类图形类,在该类包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法 设计抽象类 就要使用abstract关键字,抽象类中的抽象方法要...
  • 主要给大家介绍了关于java中抽象类、抽象方法、接口与实现接口的相关资料,文中通过示例代码将四者介绍的非常详细,并且简单介绍了抽象类和接口的区别,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
  • 抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖。 二、接口: 接口是引用类型的,类似于类,和抽象类的相似之处有三点...
  • 抽象方法必须在抽象类中

    千次阅读 2021-03-11 10:44:32
    抽象方法必须在抽象类中吗2020-07-01 15:01:18文/叶丹1、抽象方法必须在抽象类中,所以抽象类中方法都必须是抽象方法。2、Final类的属性和方法都必须被final修饰符修饰。3、最终类不能派生子类,最终方法不能被...

    抽象方法必须在抽象类中吗2020-07-01 15:01:18文/叶丹

    1、抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。2、Final类中的属性和方法都必须被final修饰符修饰。3、最终类不能派生子类,最终方法不能被覆盖。4、子类要调用父类的方法,必须使用super关键字。

    f1ebd2a5cf50b280c7f777e70826ce81.png

    抽象方法:

    java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。

    抽象方法与抽象类:

    当一个方法为抽象方法时,意味着这个方法应该被子类的方法所重写,否则其子类的该方法仍然是abstract的,这个子类由于继承父类,拥有抽象方法,因此它也是抽象类,即声明为abstract。abstract抽象类不能用new实例化对象,abstract方法只允许声明不能实现。如果一个类中含有abstract方法,那么这个类必须用abstract来修饰,当然abstract类也可以没有abstract方法。 一个抽象类里面没有一个抽象方法可用来禁止产生这种类的对象。

    抽象方法与接口:

    在interface中所有的方法都是public abstract的,即使你没有申明它是public abstract的。在interface中所有的数据成员都是public static final的,即使你没有申明.但不能是blank final 在编译时候确定的。在Java,interface的地位和class是一样的。实现interface的类,其interface中所有的方法必须被“实现”,否则这个类成为一个抽象类。Interface可以从多个interface得到继承,但是不能继承类。一个类可以实现多个interface。

    展开全文
  • 对应这一现象,Java提供了抽象类,它只能作为父类,不能实例化。定义抽象类的作用是将一类对象的共同特点抽象出来,成为代表该类共同特性的抽象概念,其后在描述某一具体对象时,只要添加与其他子类对象的不同之处...

    类的继承结构中,越往上的类越具有通用性,也就越抽象。当它抽象到一定程度,就变成概念成框架,不能再产生实例化的对象了。例如“交通工具”,就无法用它来产生一个实例。

    对应这一现象,Java中提供了抽象类,它只能作为父类,不能实例化。定义抽象类的作用是将一类对象的共同特点抽象出来,成为代表该类共同特性的抽象概念,其后在描述某一具体对象时,只要添加与其他子类对象的不同之处,而不需要重复类的共同特性。这样就使得程序概念层次分明,开发更高效。与抽象类紧密相连的是抽象方法一它总是用在抽象类或接口中。

    一、抽象类的定义

    被关键字“abstract”修饰的类,为抽象类。(而且,abstract只能修饰类和方法) abstract class className{

    类体;

    }

    在抽象类中,可以有0个或者多个抽象方法,也可以有普通的实例方法和静态方法,还可以有其他的成员变量和构造方法。如果类中没有任何形式的抽象方法,那么可以由程序员决定是否将类声明成abstract类型,但是只要是下面这些情况之一,那类必定为抽象类,必须加上abstract修饰。类中明确声明有abstract方法的。

    类是抽象类继承下来的,而且没有实现父类中全部的抽象方法。

    类实现了一个接口,但没有将其中所有的抽象方法实现。

    抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口。(这点要铭记,有些文章说含有抽象方法的类就是抽象类,这个是不准确的)

    那么什么是抽象方法呢?

    二、抽象方法的声明

    抽象方法:使用abstract关键字定义的方法,抽象方法没有具体的方法体;抽象类必须也要用abstract关键字定义。

    抽象方法是一种只有方法声明面没有方法体定义的特殊方法。它的声明部分和一般方法并

    没有太大的区别,也有访问权限、返回值类型等,只是需要在前面加上一个关键字“abstract”。通常的形式如下

    abstract 访问权限 返回类型 方法名 ([参数列表]);

    特持别注意它的最后有一个分号“;”,而没有方法体的括号“{ }”。

    例如下面就是一个合法的抽象方法。

    abstract protected void eat();

    而下面这个,虽然方法体为空,但它不是一个合法的抽象方法。

    abstract protected void eat() { }

    声明抽象方法时有以下几个限制,具体原理文章后面会讲到构造方法不能声明为 abstract

    静态方法不能声明为 abstract

    privale方法不能声明为 abstraet

    final方法不能声明为 abstract

    抽象方法只能出现在抽象类或接口中

    三、抽象类的特点

    1.抽象类和抽象方法必须用abstract关键字修饰 abstract class 类名 {}

    public abstract void 方法名();

    2.抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口(这点上面讲过,是个易错点)

    3.抽象类不能实例化,那么抽象类如何实例化

    抽象类如果可以实例化的话,那么就可以调用类中的抽象方法,很明显调用抽象方法是没有意义的,所以抽象类不能实例化,如何非要实例化,那就按照多态的方式,由具体的子类实例化。(其实这也是多态的一种,抽象类多态,不能算抽象类实例化) public class Demo1_Abstract {

    public static void main(String[] args) {

    //Animal a = new Animal();//错误: Animal是抽象的; 无法实例化

    Animal a = new Cat();//父类引用指向子类对象

    a.eat();

    }

    }

    abstract class Animal {//抽象类

    public abstract void eat();//抽象方法

    }

    class Cat extends Animal {

    public void eat() {

    System.out.println("猫吃鱼");

    }

    }

    运行结果:

    4.抽象类的子类 要么是抽象类

    要么重写抽象类中的所有抽象方法

    补充说明

    四、抽象类的成员特点

    抽象类的成员特点:成员变量:既可以是变量,也可以是常量。(abstract是否可以修饰成员变量?不能修饰成员变量)

    构造方法:有,用于子类访问父类数据的初始化。

    成员方法:既可以是抽象的,也可以是非抽象的。 abstract class Demo {

    int num1 = 10; //定义了变量

    final int num2 = 20; //定义了常量

    public Demo(){} //构造方法

    public void print() {

    System.out.println("hello");

    }

    public abstract void method(); //既有非抽象方法又有抽象方法

    }

    class Test extends Demo {

    public void method() {

    System.out.println("world");

    }

    }

    抽象类的成员方法特性:抽象方法:强制要求子类做的事情。

    非抽象方法:子类继承的事情,提高代码复用性。

    五、抽象类的一些问题解答

    1、一个抽象类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?

    可以,这么做目的只有一个,就是不让其他类创建本类对象,交给子类完成

    2.构造方法为什么不能声明为 abstract?

    构造方法不能被继承,一个抽象的构造方法将永远不会被实现,所以它也不能声明为abstract的。

    3.abstract不能和哪些关键字共存? 1.abstract和static

    被abstract修饰的方法没有方法体

    被static修饰的可以用类名.调用,但是类名.调用抽象方法是没有意义的

    2.abstract和final

    被abstract修饰的方法强制子类重写

    被final修饰的不让子类重写,所以他俩是矛盾

    3.abstract和private

    被abstract修饰的是为了让子类看到并强制重写

    被private修饰不让子类访问,所以他俩是矛盾的

    测试如下 abstract class Demo {

    //public static abstract void print();//错误: 非法的修饰符组合: abstract和static

    //public final abstract void print();//错误: 非法的修饰符组合: abstract和final

    private abstract void print();//错误: 非法的修饰符组合: abstract和private

    }

    展开全文
  • 011 抽象类必须要有抽象方法吗?

    千次阅读 2021-02-28 14:53:53
    (有抽象方法就是抽象类,是抽象类可以没有抽象方法)解释:抽象方法:java的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不...

    抽象类必须要有抽象方法吗?

    答:不需要,

    抽象类不一定有抽象方法;但是包含一个抽象方法的类一定是抽象类。(有抽象方法就是抽象类,是抽象类可以没有抽象方法)

    解释:

    抽象方法:

    java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。

    抽象方法与抽象类:

    当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,否则其子类的该方法仍然是abstract的,而这个子类也必须是抽象的,即声明为abstract。abstract抽象类不能用new实例化对象,abstract方法只允许声明不能实现。如果一个类中含有abstract方法,那么这个类必须用abstract来修饰,当然abstract类也可以没有abstract方法。 一个抽象类里面没有一个抽象方法可用来禁止产生这种类的对象。

    Java中的抽象类:

    abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。

    在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。

    展开全文
  • Kotlin抽象类实现

    2020-08-25 09:49:47
    主要介绍了Kotlin抽象类实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • /** 抽象类:包含抽象方法的类 抽象类 1、抽象类不能进行实例化 也就是:...4、当一个普通类继承了一个抽象类,那么注意,当前这个普通类,一定要 重写抽象类当中的抽象方法。 5、当普通类A继承了抽象类,且不想实现
  • 主要介绍了Java的抽象方法抽象类,结合实例形式详细分析了java抽象方法抽象类的相关原理、使用方法及操作注意事项,需要的朋友可以参考下
  • 对于面向对象编程来说,抽象是它的一大特征之一。在Java,可以通过两种形式来体现OOP的抽象:接口和抽象类。...如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为
  • PHP抽象类 介绍

    2020-12-19 10:19:53
    在自然语言,我们理解抽象的概念是,一个物体的一种大的描述,这种描述对...抽象类通常具有抽象方法方法中没有大括号 PHP抽象类应用重点: 1.抽象方法不必实现具体的功能,由子类来完成 2.在子类实现抽象类方法
  • 因为抽象类不能实现实例但是一旦一个普通类继承了抽象类 便也可以在构造函数调用其抽象类的构造函数也可以使用其方法可以这么理解吧 抽象类就是一个不能实例化的不同类不过如果方法加了abstract那么就必须在子类...
  • 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定...
  • 11.抽象类必须要有抽象方法吗?

    千次阅读 2020-07-26 22:07:01
    抽象类一定有抽象方法;但是包含一个抽象方法的类一定抽象类。(有抽象方法就是抽象类,是抽象类可以没有抽象方法) 解释: 抽象方法: java的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据...
  • 主要介绍了Java接口和抽象类的区别与相同之处,本文讲解了抽象类的概念、接口的概念、接口和抽象类的区别与联系等内容,需要的朋友可以参考下
  • C#抽象类、抽象属性、抽象方法

    千次阅读 多人点赞 2020-06-10 00:51:31
    前言:本博文讲述了C#面向对象抽象类,通过本博文的阅读,读者可以掌握C#抽象类的概念、应用、好处以及一些特性。 文章目录一、抽象类概念二、示例讲解三、抽象类的作用四、使用抽象类的好处五、抽象类总结 一、...
  • 抽象类必须要有抽象方法吗?

    万次阅读 2019-07-24 19:05:41
    答案是:不必须 这道题考察的是抽象类的知识: 抽象类必须有关键字abstract来修饰。 抽象类可以不含有抽象方法 如果一个类包含抽象方法,则该类必须是抽象类 ...
  • 主要介绍了Java抽象类概念与用法,结合实例形式分析了java抽象类的概念、方法、特点及使用方法,需要的朋友可以参考下
  • 含有抽象方法的类一定抽象类,但是抽象类一定含有抽象方法。 Person类(没有抽象方法抽象类): public abstract class Person { private String name; private int age; public Person() { } ...
  • java抽象类有构造方法吗?

    千次阅读 2020-05-27 21:50:09
    抽象类中方法 抽象方法 abstract void eat(); 没有方法体,没有{},以; 结尾. 非抽象方法 void sleep(){ syso .... } 抽象类子类: 1.非抽象类,但是必须重写父类的抽象方法 2.抽象类,无须管抽象...
  • 抽象类和抽象方法

    千次阅读 2018-08-12 19:46:26
    含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类方法不必是抽象的。abstract class类定义抽象方法必须在具体(Concrete...
  • 主要介绍了浅谈Java抽象类和接口的个人理解,具有一定借鉴价值,需要的朋友可以参考下。
  • java第六章练习题(抽象类与接口)

    千次阅读 2018-09-21 10:32:51
    抽象类中一定含有抽象方法  B.抽象类的声明必须包含abstract关键字  C.抽象类既能被实例化也能被继承  D.抽象类中不能有构造方法    2.下列有关抽象方法叙述正确的是哪项?(选两项)  A. 抽象方法...
  • JAVA 抽象类,抽象方法

    千次阅读 2021-04-22 21:18:22
    如一个抽象类Animal有一个抽象方法run.public class Animal{public abstract void run();}那么他的子类必须要实现run这个方法。不是实现的话编译就会报错。public class Dog{@Overridepublic void r...
  • 1、抽象类(1)抽象方法回想:public static void main(String[] args){花括号里面的...(2)抽象类含有抽象方法的类。就叫做抽象类。abstract class 类名{成员属性;成员方法;}---抽象类(3)注意点:a、抽象类中不一...
  • //含有抽象方法的类一定抽象类,但是抽象类中一定要有抽象方法 abstract class An{  abstract public void f();//没有方法体的方法叫做抽象方法,必须用abstract修饰,如果有抽象方法,该类一定抽象类  /...
  • 抽象类和抽象方法定义及讲解?

    千次阅读 多人点赞 2019-02-26 17:26:23
    首先说抽象类: (1)抽象类只能作为其他类的基类,它不能直接实例化,对抽象类不能使用new 操作符。 (2)抽象类中可以包含抽象成员,但非抽象类中不可以。...(1)抽象方法必须声明在抽象类中。 ...
  • 主要介绍了Java接口和抽象类原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 122,099
精华内容 48,839
关键字:

抽象类中一定含有抽象方法