精华内容
下载资源
问答
  • 抽象方法必须在抽象类中
    千次阅读
    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();
        }
    }

     

    展开全文
  • Java抽象方法抽象类

    千次阅读 2022-04-22 15:41:00
    1、抽象方法 如果父类的方法本身不需要实现任何功能,仅仅是为了定义方法签名,目的是让子类去...因为这个抽象方法本身是无法执行的,所以Person无法被实例化。并且编译器会报错无法编译Person,因为它包含抽...
  • 在抽象类中可以没有抽象方法 这是最近Java开发人员工作面试的电话面试中向我的一位读者提出的有趣的Java核心问题之一。 即使他知道你 无法用Java将抽象类定型为final ,他对方法的措辞感到困惑。 答案很简单,不...
  • 抽象类必须要有抽象方法吗?抽象类能使用 final 修饰吗?
  • 如何java调用抽象类方法

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

    千次阅读 2021-03-07 00:02:17
    一、什么是抽象类和抽象方法没有具体功能的实现,通过子类继承后重写方法来实现一定约束的类称之为抽象类抽象类必须被abstract修饰。抽象方法就是只有方法声明,没有方法体的方法抽象类的使用一般通过继承来实现...
  • 以举例的方式说到如何区分抽象类和接口,这里我们...4)接口中凡是变量必须是public static final,而在抽象类中没有要求。忽然有此一文,是因为同学疑惑道:抽象类居然还有构造方法,又不能直接用来new。我的解释...
  • 抽象类中是否一定要有抽象方法

    千次阅读 2020-06-11 09:20:14
    如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过。 抽象类可以没有抽象方法,甚至可以和普通类一样含有构造方法。当你要求不能创建某个类的实例,只能通过其他类继承这个类来使用时,就...
  • 目录1. 如何调用抽象类中的抽象方法?2. 如何调用接口中的抽象方法? 1. 如何调用抽象类中的抽象方法? 2. 如何调用接口中的抽象方法
  • 11.抽象类必须要有抽象方法吗?

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

    万次阅读 2020-06-17 17:41:11
    抽象类的含义是什么? 抽象类怎么创建? 抽象类的规则有哪些? 抽象方法? 抽象类被运用的意义是什么?
  • Java中抽象类可以有非抽象方法

    千次阅读 2020-07-03 20:57:37
    java中抽象类可以有非抽象方法、抽象方法 但是如果这个类有抽象方法那么它一定是抽象类 package com.d; public abstract class Vehicle { public abstract String NoOfWheels(); public String No(){ System.out...
  • Java中抽象类方法的重写

    千次阅读 2020-11-10 22:29:33
    1. 抽象类 关键字:abstract 类:用来描述一类具体的事物 抽象类:抽象的、模糊的、不具体的类 Java的普通类中是不允许多继承的,原因是会出现调用 不明确的问题;...抽象类中可以有构造器,但是不能创建
  • C#抽象类、抽象属性、抽象方法

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

    千次阅读 多人点赞 2022-04-08 15:17:42
    各位铁汁们大家好呀!今天让我们继续学习java,看看java抽象类和接口到底是什么? 里面也会讲到多态呀,一起来看看吧
  • Java抽象类和抽象方法归纳总结

    千次阅读 2020-06-11 12:26:24
    文中引用的具体例子这里:抽象类的一个例子 Triangle类是继承自抽象类GeometriObject的具体子类 GeometriObject包含两个抽象方法:getPerimeter,getArea/ Triangle实现了这两个方法 好了,进入正题。 目录...
  • 抽象类和抽象方法

    千次阅读 2018-08-12 19:46:26
    摘自牛客网总结 含有abstract修饰符的class即为...abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么...
  • java抽象类的构造方法和普通类的构造方法...抽象类就是一个不能实例化的不同类不过如果方法加了abstract那么就必须在子类里面重写了(1)Java中抽象类和接口有构造方法吗?①接口 不可以有构造方法在接口里写入构...
  • JAVA 抽象类,抽象方法

    千次阅读 2021-04-22 21:18:22
    如一个抽象类Animal有一个抽象方法run.public class Animal{public abstract void run();}那么他的子类必须要实现run这个方法。不是实现的话编译就会报错。public class Dog{@Overridepublic void r...
  • 如何调用抽象类中的非抽象方法

    千次阅读 2020-10-18 15:40:28
    2.在抽象类中的成员方法可以包括一般方法和抽象方法。抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实
  • C#抽象类和抽象方法(很详细,你值得拥有!!!)

    千次阅读 多人点赞 2020-06-18 19:10:32
    什么是抽象类? 什么是抽象方法? 抽象类和抽象方法有什么特性? 抽象类的使用场景? 抽象类的作用? 抽象类和接口的区别? 抽象类和抽象方法怎么声明? 抽象类和抽象方法如何使用?
  • 抽象类和抽象方法定义及讲解?

    千次阅读 多人点赞 2019-02-26 17:26:23
    首先说抽象类: (1)抽象类只能作为其他类的基类,它不能直接实例化,对抽象类不能使用new 操作符。 (2)抽象类中可以包含抽象成员,但非抽象类中不可以。...(1)抽象方法必须声明在抽象类中。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,462,620
精华内容 585,048
关键字:

抽象方法必须在抽象类中