python和java的区别 python下的抽象类的用途和意义?
python下的抽象类的用途和意义?
抽象类不完整,只能用作基类。
它不同于非抽象类:1。抽象类不能直接实例化,对抽象类使用new运算符是编译时错误。
尽管某些变量和值在编译时可以是抽象类型,但这些变量和值必须为null或包含对从抽象类派生的非抽象类实例的引用。
2. 允许(但不要求)抽象类包含抽象成员。
3. 抽象类不能被密封。
从抽象类派生非抽象类时,这些非抽象类必须具体实现所有继承的抽象成员,以便重写这些抽象成员。
在以下示例中:抽象类a{public abstract void f()}抽象类B:a{public void g(){}}抽象类C:B{public override void f(){//f}}抽象类a引入抽象方法f。
类B引入另一个方法g,但由于它不提供f的实现,B也必须声明为抽象类。
C类重写F并提供具体的实现。
由于C中没有抽象成员,因此可以(但不是必须)将C声明为非抽象类。
抽象类与接口密切相关。
但是接口比抽象类更抽象,主要体现在它们的区别上:1)类可以实现无限的接口,但只能继承一个抽象类(或任何其他类型)的接口,从抽象类派生的类仍然可以实现接口,因此,接口被用来解决多重继承的问题。
2)抽象类可以有非抽象方法,接口不能,抽象类中的方法只是一个声明,没有具体实现的方法必须用public修改。
3)抽象类中的成员变量可以由不同的修饰符修改,接口中的成员变量默认为静态final。
4)这也是最重要的一点,其实质是“抽象类是对象的抽象,接口是行为规范”。
为什么使用抽象基类在Python?
有时有些类型有一些共同的特点,可以抽象形成基类,但基类本身不能实例化,只有子类可以继承并实现抽象方法实例化子类对象,这样的类称为抽象类。例如,移动电话、计算机和电视可以归类为电子设备。电子设备是抽象类,具有诸如开机、运行和关机等抽象方法。但是,不能直接新建电子设备类的对象,因为不能指定其特定的形状、功能和其他信息。您只能从电子设备类中派生出手机、计算机和电视机,并将它们分开本文给出了不同开机、运行和关闭方法的具体实现,然后对这些类的对象进行了新的定义。这就是多态性的体现。静态语言(如C/Java)本机支持多态性,并具有抽象关键字,可用于定义抽象类。Python是duck类型的语言,它没有真正的多态性,因此它没有该语言的原生抽象类支持,只能通过第三方封装类如ABC simulation来实现。对于没有接触过C和Java的Python学习者来说,很难理解。
python和java的区别 编程python是什么 python和java
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。