精华内容
下载资源
问答
  • 抽象类必须至少包含一个
    千次阅读
    2020-07-26 22:07:01

    答:不需要,

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

    解释:

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

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

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

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

    更多相关内容
  • 设计一个抽象类图形类,在该类中包含至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法 设计抽象类 就要使用abstract关键字,抽象类中的抽象方法要...
  • System.out.println("输入一个整数来生成图形!"); int sign = sc.nextInt(); if(sign%2==0){ System.out.println("生成长方形"); System.out.println("输入长度"); double l = sc.nextDouble(); System.out....

    package test1;import java.util.Scanner;public class Test { /** * @param args */ public static void main(String[] args) { Circle c = new Circle(10); System.out.println(c.toString()); Shape ss =null; Scanner sc = new Scanner(System.in); System.out.println("输入一个整数来生成图形!"); int sign = sc.nextInt(); if(sign%2==0){ System.out.println("生成长方形"); System.out.println("输入长度"); double l = sc.nextDouble(); System.out.println("输入宽度"); double w = sc.nextDouble(); ss = new Square(w,l); }else{ System.out.println("生成圆形"); System.out.println("输入半径"); double r = sc.nextDouble(); ss= new Circle(r); } System.out.println(ss.toString()); }}interface Shape{ double getArea(); double getParameter();}class Circle implements Shape{ private double radius; public Circle(double r) { // TODO 自动生成的构造函数存根 this.radius = r; } @Override public String toString() { // TODO 自动生成的方法存根 return "园的半径是:"+radius+" 面积是:"+getArea()+" 周长是:"+getParameter(); } @Override public double getArea() { // TODO 自动生成的方法存根 return Math.PI*radius*radius; } @Override public double getParameter() { // TODO 自动生成的方法存根 return 2*Math.PI*radius; }}class Square implements Shape{ private double width; private double length; Square(double w,double l){ this.width = w; this.length = l; } @Override public String toString() { // TODO 自动生成的方法存根 return "长方形的宽:"+width+" 高:"+length+" 面积:"+getArea()+" 周长:"+getParameter(); } @Override public double getArea() { // TODO 自动生成的方法存根 return width*length; } @Override public double getParameter() { // TODO 自动生成的方法存根 return 2*(width+length); }}大体功能,其他自己改一下。

    取消

    评论

    展开全文
  • /** 抽象类包含抽象方法的类 抽象类 1、抽象类不能进行实例化 也就是:...4、当一个普通类继承了一个抽象类,那么注意,当前这个普通类,一定要 重写抽象类当中的抽象方法。 5、当普通类A继承了抽象类,且不想实现

    /**

    • 抽象类:包含抽象方法的类 抽象类
    • 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());
    }
    }

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

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

    展开全文
  • 要是一个类成为抽象类,这个类应具有的条件是 至少一个虚函数,这句话对吗?
  • 抽象类必须要有抽象方法吗?

    千次阅读 2020-03-14 11:13:06
    3.一个类如果包含抽象方法,那么这个类必须抽象类,否则编译就会报错。 4.最关键的一点就是如果一个类是抽象类,那么这个类是不能被实例化的。 抽象类只能用其子类(该子类不能是抽象类)去创建新对象。 ...
  • 定义一个抽象类Person,其中有一个公共的抽象方法work()。定义Person的子类:Student(学生)、Teacher(教师)。学生的工作是“预习、学习、复习、写作业”;教师的工作是“备课、上课、辅导、批改作业”。编写Test类,...
  • 窗体应用程序。一个抽象类几何形状包含抽象求面积方法,三个继承类圆、矩形、三角形实现抽象类求面积方法。
  • 纯虚函数和抽象类

    2020-08-22 12:36:31
    (每一个有虚函数的,在该对象的内存的第一块就是存放的虚函数表的地址) 在使用基类指针指向派生对象时,需要将基类的析构函数添加virtual关键字,将其变为虚析构函数。(否则在删除基类指针指向的额派生...
  • C++抽象类

    2021-06-09 00:09:18
    概念在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类抽象类往往用来表...
  • 抽象类中是否一定要有抽象方法?

    千次阅读 2020-06-11 09:20:14
    如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过。 抽象类可以没有抽象方法,甚至可以和普通类一样含有构造方法。当你要求不能创建某个类的实例,只能通过其他类继承这个类来使用时,就...
  • 主要介绍了Java接口和抽象类用法,结合实例形式总结分析了Java接口与抽象类的具体定义、使用技巧与相关注意事项,需要的朋友可以参考下
  • 纯虚函数与抽象类

    2019-05-30 18:51:05
    在很多情况下,存在基类中虚函数无法给出具体实现代码的情况,如写一个空的函数体,这就引出了虚函数的概念。 纯虚函数在声明时要在函数原型的后面赋0,其声明格式如下: virtual <返回值类型> <函数名&...
  • 要求定义一个抽象的动物类,该类中有一个抽象的捕食方法,和一个非抽象的进食方法。在进食方法中调用捕食方法。定义3个不同的动物类,分别是老虎、猴子和狼,这些类继承抽象的动物类。 实现思路:定义抽象类动物...
  • 包含纯虚函数的只用作基类, 要成为抽象基类, 必须至少包含一个纯虚函数. 纯虚函数: 函数原型中的=0使虚函数称为纯虚函数. 例如下面例子中的Area()方法 class BaseEllipse { private: double x; double y; ...
  • 抽象类(Abstract Class)抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。...
  • 至少包含一个纯虚函数的类 抽象类的使用要求 抽象类不能实例化,即不声明对象 抽象类只作为基类被继承 可以定义抽象类的指针或引用 抽象类设计举例 平面上的几何图形可以抽象定义为类,如矩形类、圆类、三角形...
  • 任何一个类,如果它里面至少一个方法是被声明为抽象的,那么这个必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。在的声明中使用 abstract 修饰符就可以将...
  • 任何一个类,如果它里面至少一个方法是被声明为抽象的,那么这个必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。在的声明中使用 abstract 修饰符可以将...
  • 包含有纯虚函数的类称为抽象类,一个抽象类至少具有一个纯虚函数。抽象类只能作为基类派生出的新的子类,而不能在程序中被实例化(即不能说明抽象类的对象),但是可以使用指向抽象类的指针。像在开发程序的过程中,...
  • 如果将一个类声明为 abstract,那么这个类就是抽象类抽象类可以包含抽象方法、字段和具体方法。抽象类不能被实例化,但抽象类的对象变量可以引用了一个非抽象子类的实例。如果自下而上在类的继承层次结构中上移,...
  • java中接口和抽象类的区别(保证你看就懂)

    千次阅读 多人点赞 2021-02-25 10:48:39
    4、一个类只能继承一个抽象类,但可以实现多个接口; 5、抽象类中可以写非抽象的方法,从而避免在子类中重复书写它们,这样可以提高代码的复用性,这是抽象类的优势;接口中只能有抽象的方法; 针
  • 关键字、接口、抽象类
  • JAVA图形面积与周长(抽象类

    千次阅读 多人点赞 2020-01-15 19:18:13
    一个类就是一种抽象。封装性体现在Java中的数据除了基本类型的数据外,都以对象的形式存在,对象是方法与数据的封装体。 继承性是子类自动共享父类数据结构和方法的机制,这是之间的一种关系。在定义和实现一个类...
  • 主要介绍了C++纯虚函数与抽象类的相关资料,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,930
精华内容 63,972
关键字:

抽象类必须至少包含一个