精华内容
下载资源
问答
  • 抽象类一定包含抽象方法吗
    千次阅读
    2021-02-28 14:53:53

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

    答:不需要,

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

    解释:

    抽象方法:

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

    抽象方法与抽象类:

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

    Java中的抽象类:

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

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

    更多相关内容
  • 下面小编就为大家分享一篇C# 抽象类,抽象属性,抽象方法的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 本文简述了C#中实现抽象类里建立静态方法的...因为静态static的本质是包含abstract和sealed的,所以静态方法可以包含抽象类中,并通过抽象类名.静态方法 来使用该方法。又因为静态包含sealed特性,所以不可以被继
  • 抽象类必须要有抽象方法吗?

    万次阅读 2019-07-22 14:36:51
    答案是:不必须。...3.一个类如果包含抽象方法,那么这个类必须是抽象类,否则编译就会报错。 4.最关键的一点就是如果一个类是抽象类,那么这个类是不能被实例化的。 如下: public abstract cl...

    答案是:不必须。

    这个题目主要是考察对抽象类的理解。

    说一下我个人的理解吧。

    1.如果一个类使用了abstract关键字修饰,那么这个类就是一个抽象类。

    2.抽象类可以没有抽象方法

    3.一个类如果包含抽象方法,那么这个类必须是抽象类,否则编译就会报错。

    4.最关键的一点就是如果一个类是抽象类,那么这个类是不能被实例化的。

      如下:     

    public abstract class  MQTest {
        
    }

     现在user这个类就是一个抽象类,如果直接 使用该类创建新对象是行不通的,编译直接报错。

    抽象类只能用其子类(该子类不能是抽象类)去创建新对象。

    接下来我就用狗的例子来说明,先创建一个动物类(抽象类),然后创建一个狗类(抽象类),狗下面再分为金毛和二哈(非抽象类)。

    动物类:

    package com.xingli.abstractDemo;
    
    import lombok.Data;
    
    /**
     *@ClassName Animal
     *@Description 动物抽象类
     *@Auther William
     *@Date 2019/7/22 14:11
     *@Version 1.0
     */
    @Data
    public abstract class Animal {   
       //定义一个抽象的“让动物叫”的方法 
       public abstract void say();
    }

    狗类:

    package com.xingli.abstractDemo;
    
    /**
     *@ClassName Dog
     *@Description 狗类的抽象方法
     *@Auther William
     *@Date 2019/7/22 14:13
     *@Version 1.0
     */
    public abstract class Dog extends Animal{
        //默认继承父类的say方法
    }

    金毛:

    package com.xingli.abstractDemo;
    
    /**
     *@ClassName JINMAODog
     *@Description 金毛
     *@Auther William
     *@Date 2019/7/22 14:16
     *@Version 1.0
     */
    public class JINMAODog extends Dog{
    
        //实现父类的抽象方法
        @Override
        public void say() {
            System.out.println("金毛:我的名字叫金毛");
        }
    
    }
    

    二哈:

    package com.xingli.abstractDemo;
    
    /**
     *@ClassName ERHADog
     *@Description 二哈
     *@Auther William
     *@Date 2019/7/22 14:21
     *@Version 1.0
     */
    public class ERHADog extends Dog{
        @Override
        public void say() {
            System.out.println("二哈:我的名字叫二哈");
        }
    }
    

    直接父类创建新对象:结果报错

    使用动物子类创建新对象,因为狗类也是抽象接口所以也报错

    使用非抽象子类创建新对象(正确)

    public class Test {
        public static void main(String[] args) {
            Animal erhaDog = new ERHADog();
            Animal jinmaoDog = new JINMAODog();
            erhaDog.say();
            jinmaoDog.say();
        }
    }

     

    展开全文
  • 抽象类包含抽象方法的类 抽象类 1、抽象类不能进行实例化 也就是:Shape shape = new Shape(); 2、在抽象类当中,可以拥有和普通类一样的数据成员和方法 public int age; public static int count; public void ...

    /**

    • 抽象类:包含抽象方法的类 抽象类
    • 1、抽象类不能进行实例化 也就是:Shape shape = new Shape();
    • 2、在抽象类当中,可以拥有和普通类一样的数据成员和方法
    • public int age;
    • public static int count;
    • public void func() {
    • }
      
    • 3、抽象类是可以被继承的,可以发生向上转型。。。。
    • 4、当一个普通类继承了一个抽象类,那么注意,当前这个普通类,一定要
    • 重写抽象类当中的抽象方法。
    • 5、当普通类A继承了抽象类,且不想实现抽象类当中的抽象方法的时候
    • 那么这个普通类可以被修改为抽象类A,此时就不需要进行实现了,当然你也可以实现。
    • 如果一个普通类B,继承了这个抽象类A,此时就要实现这个抽象方法了
    • 出来混 迟早要还的。
    • 6、抽象方法不能是private修饰的,因为抽象方法就是用来被重写的
    • 7、抽象类的出现 其实最大的意义就是为了被继承
      */
      abstract class Shape {
      public abstract void draw();
      }

    class Rect extends Shape {
    @Override
    public void draw() {
    System.out.println(“♦”);
    }
    }
    class Circle extends Shape {
    @Override
    public void draw() {
    System.out.println(“○”);
    }
    }

    public class TestDemo {
    public static void drawMap(Shape shape) {
    shape.draw();
    }
    public static void main(String[] args) {
    drawMap(new Rect());
    drawMap(new Circle());
    }
    }

    展开全文
  • 重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖。 二、接口: ...
  • 设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法 设计抽象类 就要使用abstract关键字,抽象类中的抽象方法要...
  • 主要介绍了JAVA抽象类和抽象方法(abstract),结合实例形式分析了java抽象类及抽象方法相关定义、使用技巧与操作注意事项,需要的朋友可以参考下
  • 设计一个抽象类Vehicle,由它派生出类Car和类Truck,类Car包含名称、颜色和载客数三个数据成员,类Truck包含名称、颜色和载重量三个数据成员。使用如下函数测试你的程序:
  • 重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,...
  • 下面要注意一个问题:在《JAVA编程思想》一书中,将抽象类定义为“包含抽象方法的类”,但是后面发现如果一个类不包含抽象方法,只是用abstract修饰的话也是抽象类。也就是说抽象类一定必须含有抽象方法。个人觉得...

     下面要注意一个问题:在《JAVA编程思想》一书中,将抽象类定义为“包含抽象方法的类”,但是后面发现如果一个类不包含抽象方法,只是用abstract修饰的话也是抽象类。也就是说抽象类不一定必须含有抽象方法。个人觉得这个属于钻牛角尖的问题吧,因为如果一个抽象类不包含任何抽象方法,为何还要设计为抽象类?所以暂且记住这个概念吧,不必去深究为什么。

    我们都知道,有抽象方法的类是抽象类,反过来说,抽象类都有抽象方法吗?

      其实这个问题非常明白,用abstract修饰的类就是抽象类,并不是说抽象类中必须有抽象方法,即使一个类中的方法全部实现过,也可以用abstract修饰为抽象类,所以抽象类不一定都有抽象方法。

      下面代码中是一个没有抽象方法的抽象类:
     

    abstract class DemoClass{ 
        public void printMessage(String msg){ 
            System.out.println(msg); 
        } 
    }

     看完这段代码,我不尽又想,这个类可以被实例化吗?我怎么去调用该类中的公共方法呢?通过

    DemoClass d = new DemoClass();

    这明显是不行的,抽象类不能被实例化,即使是一个没有抽象方法的抽象类,也同样不能被实例化。当然,还可以把printMessage方法改为static类型,那么就可以直接调用了,代码如下:

    package net.moon.insignificant.abstractclass; 
    public class AbstractDemo { 
        public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException{ 
            DemoClass.printMessage("Hello, World"); 
        } 
    } 
     
    abstract class DemoClass{ 
        public DemoClass(){} 
     
        public static void printMessage(String msg){ 
            System.out.println(msg); 
        } 
    }

    另外一个牛角尖问题是:static可否修饰类,将在下一篇中分析。

    展开全文
  • 主要介绍了Java抽象类和抽象方法定义与用法,结合实例形式详细分析了Java抽象类和抽象方法相关原理、定义、使用方法及操作注意事项,需要的朋友可以参考下
  • 抽象类中是否一定要有抽象方法

    千次阅读 2020-06-11 09:20:14
    抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接...抽象类可以没有抽象方法,也可以包含非抽象方法,但有抽象方法的类一定抽象类。 ...
  • 编写程序计算长方体、圆柱体和球的表面积和体积。要求先定义一个抽象类Shape如下:使用Shape类派生出长方体类、圆柱体类、球类,在这些类里分别实现继承的纯虚函数。使用如下代码测试运行。
  • 抽象类必须要有抽象方法吗?抽象类能使用 final 修饰吗?
  • 11.抽象类必须要有抽象方法吗?

    千次阅读 2020-07-26 22:07:01
    但是包含一个抽象方法的类一定抽象类。(有抽象方法就是抽象类,是抽象类可以没有抽象方法) 解释: 抽象方法: java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数...
  • 主要介绍了java 抽象类与接口的区别介绍的相关资料,需要的朋友可以参考下...
  • 主要介绍了Java包含抽象方法的枚举,结合实例形式分析了Java包含抽象方法的枚举实现方法与相关操作技巧,需要的朋友可以参考下
  • 抽象类中可以有非抽象方法,想使用非抽象方法有两种解决方法 1.继承抽象方法,把这个类也声明为抽象类 2.继承抽象方法,实现抽象类中未完成的方法 public abstract class D { abstract void 愚公移山();//没有...
  • Java抽象方法抽象类

    千次阅读 2022-04-22 15:41:00
    1、抽象方法 如果父类的方法本身不需要实现任何功能,仅仅是为了定义方法签名,目的是让子类去...因为这个抽象方法本身是无法执行的,所以Person无法被实例化。并且编译器会报错无法编译Person,因为它包含抽...
  • 主要给大家介绍了关于java中抽象类、抽象方法、接口与实现接口的相关资料,文中通过示例代码将四者介绍的非常详细,并且简单介绍了抽象类和接口的区别,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
  • 抽象类是不是必须要有抽象方法

    千次阅读 2021-08-15 23:57:30
    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类抽象类除了不能实例化对象之外,...
  • 抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”...在抽象类中的成员方法可以包括一般方法和抽象方法。抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型...
  • 本文实例讲述了PHP中抽象类,接口功能、定义方法。分享给大家供大家参考,具体如下: 这里先介绍接口,因为在我最近看的好几本php工具书中都没有提到抽象类。 本人也觉得,在理解了接口后抽象类也非常好理解。 例子...
  • 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 867,242
精华内容 346,896
关键字:

抽象类一定包含抽象方法吗