精华内容
下载资源
问答
  • 抽象类继承接口可以不实现接口中的方法,但是必须将其定义为公共的抽象方法,而继承该抽象方法的抽象类可以不再声明该方法,但是在继承列表中的普通类中必须实现该方法(子类必须要实现抽象父类中的所有抽象方法)
    抽象类继承接口可以不实现接口中的方法,但是必须将其定义为公共的抽象方法,而继承该抽象方法的抽象类可以不再声明该方法,但是在继承列表中的普通类中必须实现该方法(子类必须要实现抽象父类中的所有抽象方法)
    展开全文
  • 功能:子类和父类的抽象类问题 IDE:Intellij IDEA 当类中有抽象方法时,该类必须为抽象类。 继承抽象类子类必须重写全部抽象方法,否则该子类也为抽象类 抽象类不能实例化,所以必须由子类来继承并重写方法 ...

    日期:2020/1/14

    功能:子类和父类的抽象类问题

    IDE:Intellij IDEA

    当类中有抽象方法时,该类必须为抽象类。
    继承抽象类的子类必须重写全部抽象方法,否则该子类也为抽象类
    抽象类不能实例化,所以必须由子类来继承并重写方法

    package testDemo;
    
    abstract class Animal{
        abstract public void eat();
    }
    
    class Dog extends Animal{
    
        @Override
        public void eat() {
            System.out.println("小狗吃东西");
        }
    }
    
    class Cat extends Animal{
    
        @Override
        public void eat() {
            System.out.println("小猫吃东西");
        }
    }
    
    public class BackAnimal {
        public static void main(String[] args){
            Animal animal;
            animal = new Dog();
            animal.eat();
            animal = new Cat();
            animal.eat();
        }
    }
    
    
    展开全文
  • 抽象类和抽象方法之间的关系 有抽象方法的类,一定是抽象类抽象类不一定有抽象方法 当子类继承抽象类时,必须要将抽象类中的抽象方法全部实现(或者称为重写),否则子类依然是抽象类 因为子类是继承父类全部...

    抽象类和抽象方法之间的关系
    有抽象方法的类,一定是抽象类;抽象类不一定有抽象方法
    当子类继承抽象类时,必须要将抽象类中的抽象方法全部实现(或者称为重写),否则子类依然是抽象类
    因为子类是继承父类全部内容,所以也就相当于子类中也有了抽象方法,通过重写,可以将抽象方法覆盖。

    抽象类的特点:必须有abstract关键字修饰,不可以通过new来创建对象,抽象方法不可以写函数体(非抽象方法必须写函数体)

     关键字小总结:不想让别的类重写的方法,用final;内容不确定的方法,用abstract(子类中用法不一样);
    希望共享的用static

    复制代码
     1 //定义一个抽象类
     2 abstract class student{
     3     //抽象方法
     4     public abstract void study();
     5     //非抽象方法
     6     public void work(){
     7         System.out.println("努力学习");
     8     }
     9 }
    10 class goodstudent extends student{
    11     //必须要实现抽象方法,否则该类依然是个抽象类
    12     public void study(){
    13         System.out.println("好学生不学习");
    14     }
    15 }
    16 public class Test {
    17     public static void main(String[] args) {
    18         goodstudent s=new goodstudent();
    19         //调用实现的方法
    20         s.study();
    21         //调用从抽象类中继承的非抽象方法
    22         s.work();
    23     }
    24 }
    展开全文
  • 第7.21节 Python抽象类—register注册虚拟子类

    千次阅读 多人点赞 2019-06-20 18:42:58
    上两节介绍了Python抽象类的真实子类的定义使用,本节介绍另一种抽象类的实现方法:虚拟子类方法。 一、 相关概念 虚拟子类是将其他的不是从抽象基类派生的类”注册“到抽象基类,让Python解释器将该类作为抽象...

    上两节介绍了Python抽象类的真实子类的定义和使用,本节介绍另一种抽象类的实现方法:虚拟子类方法。
    一、    相关概念
    虚拟子类是将其他的不是从抽象基类派生的类”注册“到抽象基类,让Python解释器将该类作为抽象基类的子类使用,因此称为虚拟子类,这样第三方类不需要直接继承自抽象基类。注册的虚拟子类不论是否实现抽象基类中的抽象内容,Python都认为它是抽象基类的子类,调用 issubclass(子类,抽象基类),isinstance (子类对象,抽象基类)都会返回True。
      这种通过注册增加虚拟子类是抽象基类动态性的体现,也是符合Python风格的方式。它允许我们动态地,清晰地改变类的属别关系。当一个类继承自抽象基类时,该类必须完成抽象基类定义的语义;当一个类注册为虚拟子类时,这种限制则不再有约束力,可以由程序开发人员自己约束自己,因此提供了更好的灵活性与扩展性(当然也带来了一些意外的问题)。这种能力在框架程序使用第三方插件时,采用虚拟子类即可以明晰接口,只要第三方插件能够提供框架程序要求的接口,不管其类型是什么,都可以使用抽象基类去调用相关能力,又不会影响框架程序去兼容外部接口的内部实现。老猿认为,从某种程度上讲,虚拟子类这种模式,是在继承这种模式下的一种多态实现。

    二、    语法
    1.    虚拟子类定义的前面步骤都与真实子类相同,首先都是import  abc 模块,然后定义抽象基类;
    2.    定义子类;
    3.    将子类注册为抽象基类的虚拟子类,语法为:
    基类名. register(子类名)三、    例子说明
    1、    以上节的Shape类为例,定义抽象基类

    from abc import ABC, abstractmethod
    
    class Shape(ABC):
        @abstractmethod
        def getArea():pass  #定义获取面积的抽象方法
        
        @abstractmethod
        def getGirth():pass  #定义获取周长的抽象方法


    2、    定义非Shape派生类

    class House():
         def __init__(self,area):self.area=area
         def showArea(self):return self.area

    3、    将House类注册为Shape的子类

    Shape.register(House)

    4、    定义House类实例化变量

    house=House(100)

    5、    查看House类是否为Shape子类,实例house是否为Shape的实例

    issubclass(House,Shape)
    isinstance(house,Shape)

    四、    执行代码及截图 

    #coding:utf-8
    #抽象类虚拟子类
    
    from abc import ABC, abstractmethod
    
    class Shape(ABC):
        @abstractmethod
        def getArea():pass  #定义获取面积的抽象方法
        
    class House():
         def __init__(self,area):self.area=area
         def showArea(self):return self.area
          
    Shape.register(House)
    issubclass(House,Shape)
    house=House(100)
    isinstance(house,Shape)
    house.getArea()#执行报错,没有该方法
    
    class House():#调整类定义,将showArea方法改成getArea
         def __init__(self,area):self.area=area
         def getArea(self):return self.area
    
    issubclass(House,Shape)#由于类重新定义,该函数应该返回False
    Shape.register(House)#重新注册虚拟子类
    
    house=House(100)#重新定义变量:
    issubclass(House,Shape)
    isinstance(house,Shape)


    本节结合案例详细介绍了通过子类注册到抽象基类的方式实现虚拟子类的方法,注册虚拟子类无需子类实现抽象基类的所有抽象方法,在某些特定场景下非常有用。
    老猿Python(https://blog.csdn.net/LaoYuanPython)系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。
    欢迎大家批评指正,谢谢大家关注!

    展开全文
  • 抽象类和接口的关系对比

    千次阅读 2007-04-06 11:42:00
    抽象类抽象类主要用来定义一些抽象的属性方法,留待子类根据自己...如果需要实现多个类的抽象方法,必须使用接口子类抽象类是is关系接口接口主要用来定义一些抽象的属性方法,留待实现类根据自己的情况实现这些属
  • 普通类和抽象类有哪些区别?

    万次阅读 多人点赞 2019-04-18 14:23:50
    普通类和抽象类有哪些区别? 抽象类不能被实例化 抽象类可以有抽象方法,抽象方法只需申明,无需实现 含有抽象方法的类必须申明为抽象类 抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类 ...
  • java抽象类和继承关系

    千次阅读 2013-07-02 23:59:12
    抽象类 有时候,我们可能想要构造一个很抽象的父类对象,它可能仅仅代表一个分类或抽象概念,它的实例没有任何意义,因此不希望它能被实例化。例如:有一个父类“ 水果(Fruit)”,它有几个子类“苹果(Apple)”、...
  • 抽象类和接口的区别以及抽象类和接口的使用场景

    千次阅读 多人点赞 2019-05-30 18:15:44
    一、抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就可以称之为抽象类。 1.抽象方法...
  • 抽象类和接口的区别

    万次阅读 多人点赞 2018-11-21 19:55:11
    从形态上看 抽象类可以给出一些成员的实现,接口却不包含成员的实现; 抽象类的抽象成员可被子类部分实现,接口的成员需要实现类完全实现,一个类...抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承...
  • 3、若一个非抽象类是某个抽象类子类,则它必须重写父类的抽象方法并给出方法体(也可以继承这个abstract方 法); 4、不允许abstractfinal同时修饰一个方法(理由见上条) 5、abstract类中可以有abstr
  • 抽象类和接口,抽象类和接口的区别

    千次阅读 多人点赞 2016-11-21 17:28:05
    其实愿意去真正了解抽象类和接口是因为看源代码后的动力。因为接口用的太多了,对于java开发来说,现在只是一个小学 生。 看了很多大牛的文章还有自己老师的总结,然后自己总结了一些。有不对的请指出,因为是个...
  • java抽象类和普通类的区别 1.抽象类不能被实例化。 2.抽象类可以有构造函数,被继承时子类...5.抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类抽象类和接口的区别 Abstract Class ...
  • 首先抽象类归根结底还是属于类,对于抽象方法,是只能存在于抽象类中的,我们无法再一个非抽象的类中声明一个抽象方法,其次抽象方法只需要声明,并不需要事先。当我们要写一个抽象类的时候只需要在类的前面声明为...
  • Java基础——抽象类和接口的关系

    千次阅读 2015-02-22 23:09:36
    在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是并不是所有的类都能用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就应该被定义为抽象类抽象类 概述  比如,...
  • 抽象类和接口有什么异同

    千次阅读 2017-09-07 18:41:36
    2.接口的实现类或者抽象类子类都只有实现了接口或者抽象类中的方法后才能被实例化。 接口和抽象类的不同点: 1.接口只有定义,其方法不能在接口中实现,只有实现接口的类才能实现接口中定义的方法,而抽象类...
  • 和抽象类是什么关系抽象类是什么?又什么作用? 分享到: 2013-07-26 21:03网友采纳 热心网友 用abstract关键字来修饰一个类时,这个类叫做抽象类。 如:abstract class cl
  • Java 抽象类和接口

    千次阅读 2018-12-04 21:45:27
    抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法构造方法的访问方式普通类一样。 由于抽象类不能实例化对象,但可以定义一个引用。抽象类必须被继承,才能被使用。 父类包含了子类...
  • 抽象类和接口

    2019-11-22 12:33:52
    抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法构造方法的访问方式普通类一样。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原...
  • 抽象类 抽象类和一般类的异同点

    千次阅读 2014-09-27 17:55:47
    /* 抽象类: 抽象:笼统,模糊,看不懂!不具体。 ...1,方法只有声明没有实现时,该方法就是抽象方法,需要被...3,抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化。 否则,这个子类还是抽象类
  • 抽象类:具有抽象方法的类,需要使用abstract关键字修饰   关系图       下面上代码   package com.ray.testobject; /** * 抽象类 * * @author ray * @since 2015-05-02 * @version 1.0 * */ public ...
  • 抽象类和接口有什么异同?

    千次阅读 2018-12-23 14:48:42
    相同点: 1.都不能被实例化 2.接口的实现类或者抽象的子类都必须实现类接口或者继承了抽象才可以被实例化 不同点: ...3.接口强调设计理念“has-a”的关系抽象类强调“is-a”关系 4.接口中定义变量...
  • 抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是...在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。 接口: 接口(英文:
  • 抽象类与接口之间的继承实现关系  对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的...
  • 抽象类和接口的区别及使用场景

    千次阅读 多人点赞 2018-07-09 10:22:53
    抽象类和接口的区别及使用场景 1.1 抽象类 1.2 接口 1.3 抽象类和接口的区别 1.3.1 语法层面上的区别 1.3.2 设计层面上的区别 1.4 什么时候使用抽象类和接口 抽象类和接口的区别及使用场景 1.1 抽象类 在...
  • Java中抽象类和接口的区别

    万次阅读 多人点赞 2019-02-07 14:10:07
    在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口...
  • java中抽象类和接口的异同点

    千次阅读 2019-09-25 23:05:57
    抽象类: ...如果抽象类子类重写了所有的抽象方法,子类可以是非抽想类,则可以实例化 如果抽象类子类没有重写了所有的抽象方法,则子类是抽想类,不可以实例化 接口: 关键字interf...
  • Person与子类关系图   每一个人都有一些诸如名字这样的属性,学生与雇员都有名字属性,因此可以将getName方法放在位于继承关系较高层的通用超类(父类)中,现在增加一个getDescription方法,返回对一个人的...
  • 主要介绍了idea 查看一个的所有子类以及子类子类并以层级关系显示,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 抽象类不能实例化对象,只能够被继承之后创建子类的对象 2.抽象方法:被abstract关键字修饰的方法称为抽象方法 抽象方法不能有方法体,即不能有{},子类必须重写抽象类中的所有抽象方法,同时子类也可以向上转型无偿...
  • 抽象类定义在了解抽象类之前,先来知道什么是抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:abstract void function();抽象方法必须用abstract关键字进行修饰。如果一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 208,687
精华内容 83,474
关键字:

抽象类和子类的关系