精华内容
下载资源
问答
  • 抽象类方法必须实现吗
    千次阅读
    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的。

    更多相关内容
  • 抽象方法必须抽象类中吗

    千次阅读 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。

    展开全文
  • 抽象类是不是必须要有抽象方法

    千次阅读 2021-08-15 23:57:30
    由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法

    在回答这个问题之前,先来了解一下抽象类。

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

    抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

    在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。(菜鸟教程)

    抽象方法只包含一个方法名,而没有方法体。

    先定义一个抽象类

    public abstract class Student {
        private String name;
        private int age;
    
         public Student(){};
    
        public Student(String name,int age,String adrees){
            this.name=name;
            this.age=age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
        
        }
    
    

    当尝试new对象的时候,会出现以下错误。
    在这里插入图片描述
    我们定义一个pupil类继承Student,并且new个对象

    public class pupil extends Student{
    
        private String name;
        private int age;
        
        public pupil(String name, int age) {//子类在调用父类时 无论自己有没有构造方法都会先去执行父类无参的函数,或者显示调用父类的有参构造函数          
            super(name, age); 
        }
        
        public static void main(String[] args) {
            pupil p = new pupil("ma", 12);
             p.setAge(18); //调用的是父类的方法
            System.out.println(p.getAge()); //18
        }
    }
    

    实例化一个 pupil类对象,该对象将从 Student类继承 7 个成员方法,且通过该方法可以设置或获取两个成员变量。
    我们在Student里面新增一个抽象方法

    public abstract void Shuchu();
    

    继承Student的pupil必须实现父类的抽象方法。

    @Override
        public void Shuchu() {
            System.out.println(name+age);
        }
    

    这里要注意,如果构造方法走的是父类的,那么打印出来的值将为空,因为值赋值给了父类的变量,pupil里面的变量值还是空的。

    总结以上,抽象类并不是一定需要抽象方法,但是一个类拥有抽象方法,那么这个类必须是抽象类,子类必须实现父类的抽象方法,或者子类本身也为抽象类,抽象类绝对不能用来初始化对象。

    1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

    2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

    3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

    4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

    5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

    6. 抽象方法需要被实现,不能被声明为静态,private,final修饰

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

    万次阅读 多人点赞 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();
        }
    }

     

    展开全文
  • 抽象类必须要有抽象方法吗?抽象类能使用 final 修饰吗?
  • 众所周知,在实现类实现接口时,必须全部重写接口的抽象方法,如 public interface MyInter{  function abstract void A();  function abstract voidB(); } //实现类中,必须全部重写A和B方法 public class ...
  • Java抽象方法抽象类

    千次阅读 2022-04-22 15:41:00
    如果父类的方法本身不需要实现任何功能,仅仅是为了定义方法签名,目的是让子类去覆盖它,那么,可以把父类的方法声明为抽象方法。 class Person { // 定义抽象方法 public abstract void run(); } 把一个方法...
  • JAVA抽象类和抽象方法(abstract)

    千次阅读 2021-02-12 13:58:25
    一、抽象(abstract)的使用当父类的某些方法不确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]。我们都知道,父类是将子类所共同拥有的属性和方法进行抽取,这些属性和方法中,有...
  • 以举例的方式说到如何区分抽象类和接口,这里我们...4)在接口中凡是变量必须是public static final,而在抽象类中没有要求。忽然有此一文,是因为同学疑惑道:抽象类居然还有构造方法,又不能直接用来new。我的解释...
  • java中抽象类可以实现接口吗

    千次阅读 2021-03-20 13:48:27
    抽象类可以实现接口 这是一种思想,当你自己的类中有共用的方法的时候,就可以在抽象类中先进行实现,然后再用你的类继承这个抽象类,如果你直接用类实现接口,那是所有方法必须实现的 ...
  • 11.抽象类必须要有抽象方法吗?

    千次阅读 2020-07-26 22:07:01
    (有抽象方法就是抽象类,是抽象类可以没有抽象方法) 解释: 抽象方法: java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要...
  • 接口、抽象类实现

    千次阅读 2019-04-13 10:49:25
    2. 接口能被类(抽象类和具体类)实现,区别在于抽象类实现接口,可以实现该接口的方法,也可以不实现该接口的方法;具体类必须实现接口的所有方法 3. 接口可以被接口继承,但不允许被类继承 4. 类之间可以相互继承...
  • JAVA——抽象类

    千次阅读 2021-03-09 00:47:50
    2.有一个抽象方法的类必须抽象类;3.抽象类中一定有抽象方法,反之不成立;4.抽象类不能够实例化 ,即不能创建对象;5.抽象类的成员一般使用 public 或者 protected修饰;6.抽象类的抽象方法强制子类重写;7. 抽象...
  • 抽象类实现问题

    千次阅读 2018-12-14 09:05:22
    包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别: 1)抽象方法必须为public或者protected(因为...
  • 直接上代码 public abstract class Parent { public abstract void dosomething(); public void say(){ dosomething(); System.out.println("www.chinoukin.com"); } } ...public class Chi
  • 如何在java中调用抽象类方法

    千次阅读 2021-03-03 12:21:42
    我想在我自己的类中调用一个抽象类方法.抽象类是:public abstract class Call {public Connection getEarliestConnection() {Connection earliest = null;...return earliest;}}我想调用上面的方法,调用类是:...
  • python 抽象类、抽象方法实现

    千次阅读 2020-10-11 09:51:06
    python 抽象类、抽象方法实现 抽象基类提供了一种要求子类实现指定协议的方式,如果一个抽象基类要求实现指定的方法,而子类没有实现的话,当试图创建子类或者执行子类代码时会抛出异常。 python 没有抽象类、...
  • 抽象类是否可实现(implements)接口?抽象类是否可继承具体类?抽象类中是否可以有静态的main方法? 上面这个题目我们来慢慢的剖析一下。先从基本的概念说起。 一、接口 官方解释:Java接口是一系列方法的声明,是一些...
  • 如果这个方法是抽象的,那么子类必须重写。 除非子类也是一个抽象类。。。
  • 抽象类可以实现接口吗?有什么意义?

    万次阅读 多人点赞 2019-06-03 19:49:52
    1.抽象类肯定可以实现接口...那么你就可以用一个抽象类实现这个接口(方法体中为空),然后再用你的类继承这个抽象类,这样就可以达到你的目的了,如果你直接用类实现接口,那是所有方法必须实现的; 3.这种思...
  • java抽象类可以被继承吗?

    千次阅读 2021-03-06 06:39:35
    抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。java抽象类可以被继承吗?抽象类可以被继承。抽象类除了不...
  • 如果子类是非抽象类,则必须实现接口中的所有方法;如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在!1、抽象类定义抽象类往往用来表征对问题领域进行分析、设计中得出的抽象...
  • 抽象类实现某个接口

    千次阅读 2021-11-26 10:15:36
    /** * created by wlx on 2021/11/26 ...抽象类没有实现接口的方法 public abstract class Test implements Itest{ } 子类需实现接口的全部方法,否则报错 public class Testapp extends Test{ @Overri...
  • java抽象类和抽象方法

    万次阅读 2021-02-27 12:26:26
    一、什么是抽象类和抽象方法没有具体功能的实现,通过子类继承后重写方法实现一定约束的类称之为抽象类抽象类必须被abstract修饰。抽象方法就是只有方法声明,没有方法体的方法抽象类的使用一般通过继承来实现...
  • Java中抽象类实现接口

    千次阅读 2021-05-06 14:22:31
    如果一个类中有至少一个抽象方法,那么它一定是抽象类,则类名前必须加上abstract关键字,抽象方法没有方法体。 抽象类无法实例化 只有覆盖了抽象类中所有的抽象方法后,其子类才可以实例化。如果存留未实现的抽象...
  • java抽象类有构造方法吗?

    千次阅读 2020-05-27 21:50:09
    抽象类,但是必须重写父类的抽象方法 2.抽象类,无须管抽象方法,但是子类不能new了 抽象类中,有构造方法,但是有不能new,那么构造方法干嘛的呢? 给子类用的!!! 抽象类,一样可以使用多态来创建子
  • 抽象类中的非抽象方法不用重写,其他必须重写,接口的方法必须重写; 接口和抽象类中只有方法名,没有定义的,如果你不定义 也就是空方法,接口就是为了弥补java不能多重继承,接口针对的是对象而不是实现实现的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,057,526
精华内容 423,010
热门标签
关键字:

抽象类方法必须实现吗