首页 > 其他分享 >类特性(抽象类)

类特性(抽象类)

时间:2023-04-26 23:02:20浏览次数:32  
标签:子类 abstract 特性 抽象 抽象类 方法 void

抽象类与抽象方法

  • 什么是抽象类:

随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一 般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父 类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。

  • 用abstract关键字来修饰一个类,这个类叫做抽象类。

  • 用abstract来修饰一个方法,该方法叫做抽象方法。

    • 抽象方法:只有方法的声明,没有方法的实现。以分号结束: 比如:public abstract void talk();
  • 含有抽象方法的类必须被声明为抽象类。

  • 抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重 写父类的抽象方法,并提供方法体。若没有重写全部的抽象方法,仍为抽象类。

  • 不能用abstract修饰变量、代码块、构造器;

  • 不能用abstract修饰私有方法、静态方法、final的方法、final的类。

抽象类举例
class void A {
	abstract void m1(); 
	public void m2() {
	System.out.println("A类中定义的m2方法");
	}
}
class B extends A {
	void m1() {
	System.out.println("B类中定义的m1方法");
	}
}
public class Test {
	public static void main(String args[]) {
	A a = new B();
	a.m1();
	a.m2();
	}
}

作用:

抽象类是用来模型化那些父类无法确定全部实现,而是由其子类提 供具体实现的对象的类。

抽象类的特点:

A:抽象类和抽象方法必须用abstract关键字修饰

B:抽象类中不一定有抽象方法,但又抽象方法的类一定是抽象类

C:抽象类不能实例化 因为它不是具体的。抽象类又构造方法,但是不能实例化?构造方法的作用是什么呢?用于子类访问父类数据的初始化

D:抽象的子类

​ a:抽象类的子类是一个抽象类

​ b:重写所有的抽象方法,这个时候子类是是一个具体的类

抽象类的实例化其实是靠具体的子类实现的是多态的方式

Animal a = new Cat();

抽象类的成员特点:

成员变量:既可以是变量,也可以是常量

构造方法:有用于子类访问父类数据的初始化

成员方法:既可以是抽象的,也可以是非抽象的。

抽象类的成员方法特性:

A:抽象方法强制要求子类做的事情

B:非抽象方法子类继承的事情提高代码复用性

标签:子类,abstract,特性,抽象,抽象类,方法,void
From: https://blog.51cto.com/u_15977171/6229036

相关文章

  • wpf中IValueConverter的两种实现方式(key和静态实例)以及 ValueConversion 特性
    使用值转换器的场景:你得到一个值,你需要根据你的需求转成另一个东西,可以是图片、对象等等都行传入的是object,传出的也是object,使用值转换器需要继承接口:IValueConverter里面有两个方法Convert和 ConvertBackConvert很好理解:你把xaml中某个对象中的某个属性或其他值传递到Value......
  • Java中抽象类和接口的区别?
    什么是抽象类?抽象类是对具体概念的抽象抽象类本质是为了继承只能被public或默认修饰行为层面抽象出来抽象方法抽象类的注意事项抽象类不可以被直接实例化抽象类中可以存在构造方法抽象类可以存在普通方法抽象方法的注意抽象方法必须定义在抽象类中仅声明实现......
  • C# 查找特性标识的所有类并获取属性值
    写个方法去获取被特性(Attribute)标记的类,并且获取标记的属性值usingOneLove.Core.ExtendedEnum;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Reflection;usingSystem.Text;usingSystem.Threading.Tasks;namespaceOneLove.Core.Ex......
  • ES6-特性
    1.let特性1:同作用域下变量不能重复声明(var可以,前者覆盖后者)特性2:块级作用域内有效也就是说:ES6后作用域,全局作用域,块级作用域(if(){},while(){},for(){},else{}),函数作用域。查找变量由内向外查找。特性3:不存在变量提升例如:var声明变量,在代码......
  • ES6-特性总结
    EcmaScript权威地址:https://www.runoob.com/w3cnote/es6-tutorial.htmlEcmaScript视频教程:https://www.bilibili.com/video/BV1uK411H7on/?spm_id_from=333.337.search-card.all.click  ......
  • javascript import maps 特性现已被全部主流浏览器支持
    值得庆祝Importmaps特性现在可以在全部三个主要浏览器内使用现在主流现代web应用引入和利用javascript是通过Esmodule模块实现。在开发javascript上,比起无模块化功能的旧版浏览器,现代浏览器支持模块化且提供了许多好用的功能引入esmodule使用<scripttype=“impor......
  • Rust编程语言入门之高级特性
    高级特性主要内容不安全Rust高级Trait高级类型高级函数和闭包宏一、不安全Rust匹配命名变量隐藏着第二个语言,它没有强制内存安全保证:UnsafeRust(不安全的Rust)和普通的Rust一样,但提供了额外的“超能力”UnsafeRust存在的原因:静态分析是保守的。使用......
  • 轻量化3D文件格式转换HOOPS Exchange新特性
    BIM与AEC市场发展现状近年来BIM(建筑信息模型)和AEC(建筑、工程和施工)市场一直保持着持续增长。2014年全球BIM软件市场价值27.6亿美元,而到2022年,预期到达115.4亿美元,复合年增长率保持在19.1%,并且对未来十年BIM增长率的保守估计为10%。世界各地的许多政府现在也在强制要求遵守......
  • dubbo高级特性
     ......
  • 15面向对象特性
    面向对象特性封装在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其含义是其他程序无法调用。要了解封装,离不开“私有化”,就是将类或者是函数中的某些属性限制在某个区域之内,外部无法调用。封装的作用:1、保护隐私(把不想别人知道......