精华内容
下载资源
问答
  • 学些Java的抽象类和抽象方法,书介绍一个例子:【问题描述】编写一个抽象父类SpeedMeter速度表,提供普通方法getSpeed()计算速度,给子类使用,但留给子类实现抽象方法getRadius(),且getSpeed()依赖getRadius();...

    学些Java的抽象类和抽象方法,书中介绍一个例子:

    【问题描述】编写一个抽象父类SpeedMeter速度表,提供普通方法getSpeed()计算速度,给子类使用,但留给子类实现抽象方法getRadius(),且getSpeed()依赖getRadius();

    书中抽象方法getRadius()没有入参,我想试下有入参的实现,由于初学,经过多次调试才调通,总结下经验。


    【代码示例】

    抽象父类SpeedMeter代码如下:

    public abstract class SpeedMeter {
        /*成员变量*/
        private double radius;
        private double turnRate;
        /*构造器*/
        public SpeedMeter(double radius) {
            this.radius = radius;
        }
        /*setter/getter*/
        public void setTurnRate(double turnRate) {
            this.turnRate = turnRate;
        }
        public double getTurnRate() {
            return turnRate;
        }
        public void setRadius(double radius) {
            this.radius = radius;
        }
        public double getRadius() {
            return radius;
        }
        /*抽象方法*/
        public abstract double getRadius(double radius);
        /*普通方法*/
        public double getSpeed() {
            return 2 * Math.PI * this.getRadius(this.getRadius()) * turnRate;
        }
    }

    子类CarSpeedMeter汽车的速度表,实现了父类的getRadius方法,代码如下:

    public class CarSpeedMeter extends SpeedMeter {
        public CarSpeedMeter(double radius) {
            super(radius);
        }
    
        @Override
        public double getRadius(double radius) {
            return 2 * radius;
        }
    
        public static void main(String[] args) {
            CarSpeedMeter cs = new CarSpeedMeter(19);
            cs.setTurnRate(1000);
            System.out.println("计算汽车每秒行驶距离是:" + cs.getSpeed());
        }
    }
    【说明】【普通方法依赖抽象方法时,抽象方法有入参的实现方法】

    一开始我对抽象父类SpeedMeter中普通方法getSpeed()中依赖的抽象方法getRadius的入参苦恼不已,不知道这里的入参该写什么,后来我的思路是:

    因为抽象方法getRadius(double radius)中radius是局部变量,不能直接给普通方法getSpeed()使用,所以想可以通过抽象父类SpeedMeter的构造器传入radius的值,然后在普通方法getSpeed()中给抽象方法getRadius作为入参使用;

    注意抽象父类SpeedMeter中有2个getRadius方法,但是必要的,完全不同的:

    1个是没有入参的getRadius方法,作用是获取构造器入参值,对应成员变量radius的getter方法;

    1个是抽象方法,需要子类实现,有入参radius的getRadius方法,实现中,被普通方法getSpeed()使用,入参值使用构造器传入的值;


    本人初学者,肯定有说的不对的地方,希望大神们指教,有没有更好的实现方法。

    展开全文
  • 接口 不能有字段,常量等,只能有方法 方法必须是public并且不能带其他关键字修饰...总结:抽象类除了不能实例化、专有抽象方法外,其他限定与普通类没区别。 接口、抽象类区别 相似点 都包含可以由派生


    接口

    • 不能有字段,常量等,只能有方法
    • 方法必须是public并且不能带其他关键字修饰(不能是静态
    • 方法不能有函数体

    普通类

    • 不能有抽象方法

    抽象类

    • 不能实例化
    • 专有抽象方法(抽象方法不能在具体类里声明)
    • 可以有具体字段和方法还有虚方法
    总结:抽象类除了不能实例化、专有抽象方法外,其他限定与普通类没区别。


    接口、抽象类区别

    相似点

    都包含可以由派生类继承的成员

    都不能直接实例化

     

    区别

     

    抽象类

    接口

    类只能继承一个基类,也就是只能继承一个抽象类

    类可以实现多个接口

    可以拥有抽象成员和非抽象成员或者虚函数

    方法不能有具体实现,必须公有,不能有静态成员、字段、常量、构造和析构函数



    虚方法、抽象方法、普通方法

    20141128

    22:56

     

    抽象类专有

    函数体

    子类必须实现

    子类重写后具有多态性

    虚方法

     

    必须有

    NO

    YES

    抽象方法

    YES

    必须没有

    YES

    YES

    普通方法

     

    必须有

    NO

    NO


    展开全文
  • 继承了抽象类的子类需要把抽象类中方法重写一遍吗? 抽象类中的非抽象方法不用重写,其他必须重写,接口的方法必须重写; 接口和抽象类中只有方法名,没有定义的,如果你不定义 也就是空方法,接口就是为了弥补...

    继承了抽象类的子类需要把抽象类中的方法重写一遍吗?
    抽象类中的非抽象方法不用重写,其他必须重写,接口的方法必须重写;
    接口和抽象类中只有方法名,没有定义的,如果你不定义 也就是空方法,接口就是为了弥补java不能多重继承,接口针对的是对象而不是实现。实现的部分可以交由对象去实现。这就是java中的多态啊。

    展开全文
  • 如果子类不是抽象类,则要求子类一定要实现父类的抽象方法。 接口类继承,如果是一个子接口,可以扩展父接口的方法;如果是一个子抽象类,可以部分或全部实现父接口的方法;如果子类不是抽象类,则要求子类一定要...

    抽象类继承,如果子类也是一个抽象类,并不要求一定重写父类方法。如果子类不是抽象类,则要求子类一定要实现父类中的抽象方法。
    接口类继承,如果是一个子接口,可以扩展父接口的方法;如果是一个子抽象类,可以部分或全部实现父接口的方法;如果子类不是抽象类,则要求子类一定要实现父接口中定义的所有方法。
    


    展开全文
  • 抽象类普通类有什么区别

    千次阅读 2020-08-08 16:18:41
    抽象类普通类有什么区别 声明方式不同 抽象类不能被实例化 抽象类中既可以含有抽象方法也可以含有普通方法,普通不能含有抽象方法,含有抽象方法的类都是抽象类 抽象方法不能声明为静态 ...
  • Java中抽象类和抽象方法的区别

    千次阅读 2017-03-02 10:47:18
    抽象类中普通方法,可以不必实现。用abstract来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法抽象类不能被实例化。 抽象方法只需声明,而不需实现某些功能含有抽象方法的类
  • //虚方法(子类可以重写也可以不重写,方法实现需要加上 override 关键字) public virtual void Say() ... } //抽象方法(子类必须有这个方法实现,方法实现需要加上 override 关键字) public abst
  • 普通类和抽象类有哪些区别?

    万次阅读 多人点赞 2019-04-18 14:23:50
    抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类 抽象方法不能被声明为静态 抽象方法不能用private修饰 抽象方法不能用final修饰 【Java面试题与答案】整理推荐 基础与语法 集合 网络编程...
  • 3.抽象方法只需申明,而无需实现,抽象类中可以允许普通方法有主体 4.含有抽象方法的类必须申明为抽象类 5.抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类抽象类和接口的区别 Abstract ...
  • 抽象方法:在类没有方法体的...抽象类中普通方法,可以不必实现。 1 用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。例如 : abstract class Animal { /...
  • 抽象类和抽象方法

    千次阅读 2018-08-12 19:46:26
    含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类方法不必是抽象的。abstract class类定义抽象方法必须在具体(Concrete...
  • 一、抽象类普通类 二、抽象类与接口 三、小结 概念 抽象类和具体类是相对的概念。“抽象”是一种存在思想逻辑的概念,而“具体”是一种可见可触摸的现实对象。简单说,比如“人”比“男人”抽象一点,...
  • 抽象类与抽象方法

    2013-08-26 11:43:11
    ·有抽象类就要有继承的子类去实现抽象类中方法。 ·抽象类中可以定义普通类中定义的所有成员,并且只有在抽象类中才能定义抽象方法。 ·抽象类中不能new对象,抽象类中的对象是给子类调用的。 ·在抽象类中定义的...
  • 抽象类普通类的区别

    千次阅读 2017-05-15 10:57:21
    (1)抽象类不能自己实例化自己(不能new自己) 需要重写...(2)抽象类可以有抽象方法普通类没有抽象方法) (3)抽象类没有方法体  Public abstract void eat(); (4).抽象类的非抽象子类必须要重写抽象类的抽象方法
  • C#抽象类与抽象方法

    2011-05-10 16:17:37
    但是一个抽象类里不写抽象方法就没有意义了,既然如此,还不如直接写个普通类? 在一个抽象类里可以不声明抽象方法,这在语法上是没问题的,但实际来说,这样是没有任何意义的。也就是说,你为什么会选择写一个抽象...
  • C#抽象类、抽象属性、抽象方法

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

    千次阅读 2020-06-11 09:20:14
    抽象类可以没有抽象方法,甚至可以和普通类一样含有构造方法。当你要求不能创建某个类的实例,只能通过其他类继承这个类来使用时,就可以定义为抽象类抽象类可以没有抽象方法,也可以包含非抽象方法,但有抽象...
  • java抽象类普通类的区别

    千次阅读 2019-04-25 18:03:27
    3.抽象方法只需申明,而无需实现,抽象类中可以允许普通方法有主体 4.含有抽象方法的类必须申明为抽象类 5.抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类抽象类是否可以有构造函数?答案是...
  • 抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”的...在抽象类中的成员方法可以包括一般方法和抽象方法。抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类...
  • 抽象类和抽象方法定义及讲解?

    千次阅读 2019-02-26 17:26:23
    首先说抽象类: (1)抽象类只能作为其他类的基类,它不能直接实例化,对抽象类不能使用new 操作符。 (2)抽象类中可以包含抽象成员,但非抽象类中不可以。...(1)抽象方法必须声明在抽象类中。 ...
  • 抽象类天生就是当爹 **抽象方法:在类没有方法体的方法,就是抽象方法。** **抽象类:含有抽象方法的类就叫抽象类。** **抽象类中的抽象方法必须被实现!...**抽象类中普通方法,可以不必实现。**
  • 抽象类普通类的区别:

    千次阅读 2017-10-27 23:06:32
    包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类普通类的主要有三点区别: 1)抽象方法必须为public或者protected(因为...
  • Java抽象类 详解

    万次阅读 多人点赞 2016-10-05 00:06:35
    一、抽象类的基本概念普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通可以包含有构造方法普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。...
  • java中普通类继承,抽象类继承,接口类继承,子类一定要重写父类方法吗 简单总结,需要重写的有: 普通类继承抽象类,重写所有抽象类方法;(不包括普通方法普通类继承接口,重写所有接口方法。(不包括...
  • Java中抽象类可以有非抽象方法

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

    千次阅读 2020-10-18 15:40:28
    如何调用抽象类中的非抽象方法 1.抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”的作用,目的是根据其格式来创建和修改新的类。对象不能由抽象类直接创建,只可以通过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 249,326
精华内容 99,730
关键字:

抽象类中的普通方法