Java基础笔记:Day_09 单例、final、抽象方法和抽象类

如何手动打包Linux(麒麟系统)的Qt程序 Qt在windows上有自带的windeployqt来帮助打包程序,但是对于linux系统来说Qt并没有自带对应的打包程序。尽管存在开源的linuxdeployqt打包程序,但是在使用的过程中会出现很多问题,对于arm架构的系统来说需要编译并修改源码等等。确定你程序所需要的插件,然后将你使用的Qt版本对应的插件复制到plugins里边。你可以根据各个库后面的路径来找到对应的库,并将它们全部复制到之前创建的lib目录下。复制你的可执行程序到bin目录下(将 your_executable。 阅读详情

一、代码块

什么是代码块:
在类或者在方法中,直接使用"{}"括起来的一段代码,表示一块代码区域。
代码块里变量属于局部变量,只在自己所在区域(前后的{})内有效。
根据代码块定义的位置的不同,我们又分成三种形式:
1):局部代码块:直接定义在方法内部的代码块:
2):初始化代码块(构造代码块):直接定义在类中.
3):静态代码块:使用static修饰的初始化代码块.
使用static修饰的初始化代码块,就叫静态代码块。一个成员,不加static属于对象,加static属于类。在主方法执行之前,执行静态代码块,只执行一次。main()方法是程序入口,为何静态代码块优先于main方法。静态成员随着字节码加载而加载进入JVM,此时main方法未执行,因为方法需要调用。先把字节码加载进入JVM,而后JVM调用main方法。一般的,我们用来做初始化操作,加载资源,加载配置文件。

具体使用情况如下:

class CodeBlockDemo 
{
	{
		//--------初始化代码块------//
		System.out.println("初始化代码块");//编译后,此句进入构造。
		//--------------------------//	
	}

	CodeBlockDemo()
	{
		System.out.println("构造器");
	}

	static
	{
		//--------静态代码块------//
		System.out.println("静态代码块");
		//--------------------------//	
	}

	public static void main(String[] args) 
	{
		{//局部代码块
			int age = 17;
			System.out.println(age);

		}
		
		System.out.println("进入main()方法");
		//创建三个CodeBlockDemo对象
		new CodeBlockDemo();
		new CodeBlockDemo();
		new CodeBlockDemo();

	}
}
/*
	非static字段的初始化是在构造器中优先执行的
	static成员通过静态代码块做初始化的
*/

但是通过反编译之后,我们可以看到:
在这里插入图片描述
二、final修饰符

关于final修饰符:
多个修饰符之间是没有先后关系的,如:public static / static public
final表示可以修饰类,方法,变量(均为非抽象)
(构造器不能使用final修饰)

①final修饰的类: 表示最终类,不能再有子类了。
一般的,这些类设置为final类:
1.本类不是为继承而设计的。
2.除以安全考虑,不允许子类改动,不准修改源代码。
3.确定该类不会再拓展。
② final修饰的方法:最终方法,该方法不能被子类覆盖。
一般的,这些方法设置为final方法:
1.在父类中,提供统一的算法骨架,就不准子类通过方法覆盖
2.在构造器中,调用的方法(初始化方法)。初始化方法一般使用final修饰
final修饰的变量:表示常量,只能赋值一次。不能再次赋值
final是唯一可以修饰局部变量的修饰符,必须做一次初始化。
常量的命名规范:
单词全部使用大写字母,若多个单词组成,使用下划线隔开
全局静态常量:public static final 修饰的变量,直接使用类名调用即可
final修饰的引用类型变量到底是表示引用的地址不能被改变?或是引用空间的数据不能改变
答:

	class Person
    {
    	public String info = "初值";
    }	
    class  FinalDemo
   {
    	public static void main(String[] args) 
 	    {
    		final Person p = new Person();
    		System.out.println(p.info);
    		p.info = "xxx";
    		System.out.println(p.info);
    	}
   }
    //如上:不能重新分配内存地址,但是空间内容是可以改变。
    //一般的,此时我们使用final修饰变量
    //当在程序中,多个共同的地方使用数据,且此数据不会改变

三、单例设计模式

保证在整个项目中,某一个类有且仅有一个实例(一个类在内存中只有一个对象)
即所有指向该类型的引用都指向同一块内存

如需求:定义一个数组的工具类,使用单例模式解决
单例的编写有N种写法,单讲一种:饿汉式
必须在该类中先自己创建一个对象
私有化自身的构造器,防止外界通过构造器创建新对象
向外暴露一个公共静态方法用于获取自身的对象

class ArrayUtil
{
	//必须在该类中,自己先创造一个对象
	private static final ArrayUtil instance = new ArrayUtil();
	//私有化自身的构造器,防止外界通过构造器创建写的对象
	private ArrayUtil(){}
	//向外暴露一个公共静态方法用于获取自身的对象
	public void sort(int[] arr)
	{
		System.out.println("排序");
	}
	public static ArrayUtil getInstance()
	{
		return instance;
	}
}

class  SingletonDemo
{
	public static void main(String[] args) 
	{
		//ArrayUtil arr = new ArrayUtil();//此句话将报错 错误: ArrayUtil()可以在ArrayUtil中访问private
		System.out.println(ArrayUtil.getInstance() == ArrayUtil.getInstance());
		ArrayUtil.getInstance().sort(null);
	}
}

四、基本类型包装类

问题1:在面向对象中,“一切皆对象”,现在问题来了。int age = 17 此代码哪有对象?
矛盾点:基本类型变量不是对象此时有矛盾。

问题2:现在给你一个复杂的十进制数据,以最快的速度在程序中转换成二进制,八进制,十六进制
矛盾点:算法太麻烦了

问题3:现在使用double表示学生考试成绩,但是你怎么表示一个人缺考和考试得零分。
矛盾点:double初值为0.0

上述的问题,进就是因为基本数据类型缺少对象,如果需要对象,必须先有类.
此时我们可以为每一个基本类型都编写一个对应的包装类,类中包含了该基本类型的一个值.比如针对第二个问题,我们把int类型进行包装:

//包装int类型的值
public  class IntWapper
{
      private   int  value;//值
      public  IntWapper(int value)
      {
              this.value   =  value;
      }
      //包含int类型相关的算法,把十进制转换2进制/8进制/16进制
}
....main......
{
     IntWapper wapper = null; //没有对象,没有数据
     IntWapper wapper = new IntWapper(0);
}

那么,我们将八大基本数据类型一一包装之后,就可以得到:在这里插入图片描述
(以上几个类,都是由final修饰过的,因此不能存在子类对其进行继承)
装箱:把基本类型数据转成对应的包装类对象。
拆箱:把包装类对象转成对应的基本数据类型数据。
Sun公司从Java5开始提供了的自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功能 :
自动装箱:可把一个基本类型变量直接赋给对应的包装类变量。
自动拆箱:允许把包装类对象直接赋给对应的基本数据类型变量。

class Demo
{
	public static void main(String[] args)
	{	
		//手动装箱
		Integer i1 = new Integer(17);
		Integer i2 = Integer.valueOf(17);
		//推荐i2 因为该方法有可能通过缓存经常请求的值而显著提高空间和时间性能
		System.out.println(i1.equals(i2));
		System.out.println(i1 == i2);
		//手动拆箱
		int i3 = i2.intValue();	

		//自动装箱:
		Integer a1 = 17;//编译:Integer a1 = Integer.valueOf(17)
		//自动拆箱		
		int a2 = a1;	//编译:int a2 = a1.intValuel
	}
}

包装类中的缓存设计(享元模式),本质就是缓存设计:
Byte、Short、Integer、Long:缓存[-128,127]区间的数据;
Character:缓存[0,127]区间的数据;

//包装类的缓存Cache
class  CacheDemo
{
	public static void main(String[] args) 
	{
		Integer i1 = new Integer(123);
		Integer i2 = new Integer(123);
		System.out.println(i1 == i2);	//false 每次new都开辟新空间,==比较内存地址

		Integer i3 = Integer.valueOf(123);
		Integer i4 = Integer.valueOf(123);
		System.out.println(i3 == i4);	//true	在(-128,127)范围,就获取缓存中的数据,并没有new

		Integer i5 = 123;
		Integer i6 = 123;
		System.out.println(i5 == i6);	//true  自动装箱底层也为手动装箱,也就是i3,i4那种方式
		
		System.out.println("---------------------------------------");

		Integer i11 = new Integer(321);
		Integer i22 = new Integer(321);
		System.out.println(i11 == i22);	//false

		Integer i33 = Integer.valueOf(321);
		Integer i44 = Integer.valueOf(321);
		System.out.println(i33 == i44);	//false	 321不在(-128,127),就new一个Integer

		Integer i55 = 321;
		Integer i66 = 321;
		System.out.println(i55 == i66);	//false

		System.out.println(i55.equals(i66));	//true
		//其底层把包装类类型拆箱为基本类型,再比较其值
		//包装类比较数据用equals,即使是数值在-128和127之间。
	}
}

1.默认值:int默认值为0,Integer默认值为null
Integer既可以表示null,也可以表示0。
2.包装类提供了该类型相关的许多算法与操作方法。
如:static String toBrinaryString(int i);
static String toOctalString(int i);
static String toHexString(int i);
3.在集合框架中,只能存储对象类型,不能存储基本数据类型值
4.int和Integer是同一种类型吗?
不是。但同名方法可以共存。
5.方法中的基本类型变量主要存储在栈中,包装类存放于堆中。
开发中建议使用包装类型。

五、抽象方法和抽象类

引出抽象方法:
假如一个图形都有“求面积”这个概念,那么无论是圆,正方形,三角形,我们都对其要求面积。
我们把它抽象为Graph类,我们可以把矩形,圆形继承Graph类。
但是我们传入的参数不一样,比如圆形的R,矩形的width和height。
子类求面积的方法也是不同的。
所以子类必须覆盖求面积的方法。

	class Graph
	{
		return 0.0;
	}
	class Circle extends Graph
	{
		...CODE...
		public double getArea(){}
	}
	class Triangle extends Graph
	{
		...CODE...
		public double getArea(){}
	}

此时,我们可以试着使用abstract关键字对其进行修饰
使用abstract修饰且没有方法体的方法,称为抽象方法。
特点:
① 使用抽象abstract修饰,方法没有方法体,留给子类去实现/覆盖。
② 抽象方法修饰符不能是private 和 final以及static。
③ 抽象方法必须定义在抽象类或接口中。
一般的:习惯性把abstract写在方法修饰符最前面,一看就知道是抽象方法。

使用abstract关键字修饰的类。
特点:
① 不能创建实例即不能new一个抽象类,即使创建出抽象类对象,调用抽象方法,根本没有方法体。
② 可以不包含抽象方法,若一旦包含,该类必须作为抽象类,抽象类可以包含普通方法(留给子类调用的),抽象类是有构造器的,子类构造器必须先调用父类构造器。
③ 若子类没有实现/覆盖父类所有的抽象方法,那么子类也得作为抽象类(抽象派生类)。
④ 构造方法不能都定义成私有的,否则不能有子类(创建子类对象前先调用父类构造方法)。
⑤ 抽象类不能使用final修饰,因为必须有子类,抽象方法才能得以实现。
⑥ 是不完整的类,需作为父类(必须要有子类),功能才能得以实现。
抽象类:一般的,我们起名,习惯使用Abstract作为前缀,让调用者一看就知道是抽象类.
抽象类中可以不存在抽象方法,如此这样没有太大的意义,但是可以防止外界创建对象,所以我们会发现有些工具类没有抽象方法,但是也使用abstract来修饰…

抽象类不能实例化:

抽象类和普通类的区别:
普通类有的成员(方法,字段,构造器),抽象类都有。
抽象类不能创建对象,抽象类中可以包含抽象方法。

Node-RED系列(二二):使用dashboard搭配echarts制作漂亮的面板 在node-red中dashboard 是一个很常用的模块,其中它有一个chart节点可以用来制作一些图表,比如柱状图,折线图,饼图,但其中的图表并不是很美观,而且可配置项非常的少。 于是就有很多小伙伴找我做一套比较好看的图表面板,在对比了一下几个图表库,我选中了echarts。 不仅美观大方,而且非常容易集成,配置。下面先来看一下我做的效果。这里是直接做了四个折线图,第一个折线图有动态效果,第二个折线图是一个多线条的折线图,第三个折线图是在一个图例显示两个折线图。第二第三都可以用于数据对比。 第四个折线 阅读详情

相关推荐

银河麒麟服务器(ky10 server)arm、x86安装qemu虚拟机

接下来就可以新建服务器了。

zengliguang的专栏 8709

抽象方法

抽象方法必须有abstract修饰

qq_40574750的博客 203

AI图像识别在临电配电箱安全检测中的应用与实践

计算机视觉与AI图像识别技术正逐步改变传统工业检测方式。通过深度学习模型如YOLOv5和ResNet,系统能自动识别设备元件并分析其状态,大幅提升检测效率和准确性。这种技术特别适用于需要严格遵循行业标准的场景,如临电配电箱的安全检测。将《施工现场临时用电安全技术规范》等条文转化为可量化的算法,AI系统能自动检查PE线连接、漏保功能等关键项目。实际应用表明,此类解决方案可使电气事故率下降90%以上,同时检测耗时缩短80%,为工地安全提供了智能化保障。

weixin_29042035的博客 328

[译]lambda表达式对 SAM (单个抽象方法类)type的处理方式

在阅读Venkat Subramaniam的著作《Functional Programming in Java》 之后,方法模式和lambda完美结合让我印象深刻。 这种模式经常用作数据源处理,但也适用于类似的情况。这种模式可以让你集中注意力在核心功能点上,而不用担心类里面有过多重复的代码。 这里创建了一个事务处理作为事例。 接口 Transaction,他有一个执行方法。 impor...

weixin_30739595的博客 254

OpenSpec 完全指南 config.yaml文件

不管是项目内还是全局存放,自定义工作流都要遵守以下规则,否则会导致OpenSpec无法识别,新手一定要记牢:一个文件夹 = 一个工作流:工作流文件夹的名称,就是中schema字段要填写的名称;每个工作流文件夹必须包含:这是工作流的核心定义文件,没有它,OpenSpec无法识别这个工作流;模板文件统一放templates/目录:如果需要自定义生成文件的模板(比如统一的提案模板、任务模板),就放在工作流文件夹下的templates/里,OpenSpec会自动识别;

h a 6 6 6 c k 为 你解决复杂难题! 1417

flowable工作流看这一篇就够了(基础篇)

接下来我们构建一个非常简单的请假流程,Flowable引擎需要流程定义为BPMN 2.0格式,这是一个业界广泛接受的XML标准。在Flowable术语中,我们将其称为一个流程定义(process definition)。一个流程定义可以启动多个流程实例(process instance)。流程定义可以看做是重复执行流程的蓝图。在这个例子中,流程定义定义了请假的各个步骤,而一个流程实例对应某个雇员提出的一个请假申请。

qq_38196449的博客 2万+

Java面向对象,基本类型包装类

贝壳信息 2017-05-24 17:32 在面向对象中,有一个概念:“一切皆对象”。现在问题来了: “int age = 17;”,这句代码中是否存在对象呢?答案是没有,因为基本类型不是对象,那不是有矛盾? 现在给你一个复杂的十进制数据,请你迅速在程序中转换为2进制、8进制、16进制,算法是不是很麻烦? 现在使用double类型来表示学生的考试成绩(double类

u011277123的博客 810

《FreeRTOS 入门与实战》第20章:移植到 RISC-V 平台

处理器上下文保存/恢复机制中断处理与任务切换的协同时钟源配置(通常使用 Machine Timer)平台特定的汇编代码实现// 典型RISC-V移植文件结构FreeRTOS/├── Source/portable/[编译器]/RISC-V/│ ├── port.c // 关键移植接口│ ├── portASM.s // 汇编级处理│ └── portmacro.h // 架构宏定义。

2301_79143213的博客 448

Java学习day09:super、final关键字,抽象类和接口

Java学习day09:super、final关键字,抽象类和接口

LF__plus的博客 553

语音算法面试复习系列3——语音识别基础 + CTC 详解

摘要:本文系统讲解了语音识别(ASR)的核心算法CTC。主要内容包括:1) ASR的核心挑战是输入音频帧与输出文字序列的对齐问题;2) CTC通过引入blank标记和动态规划算法,无需对齐标注即可训练;3) 详细解析CTC前向算法实现路径概率求和,以及贪心和Beam Search解码方法;4) 指出CTC的条件独立性假设导致无法建模输出依赖关系;5) 对比CTC与传统方法和Attention/Transducer的优缺点,分析实际应用中的subsampling技术。文章包含数学推导、代码实现和面试常见问题,

m0_60605453的博客 305

移动端实战指南:深入理解 & 接入 IAB OMSDK

OMSDK(OpenMeasurementSDK)是IABTechLab推出的标准化测量工具,用于统一移动端/原生App广告的可见性和验证流程。其核心包括Native库(采集设备数据)和OMID JavaScript层(实现通信),通过标准化接口让开发者只需接入一套SDK即可兼容多个测量厂商,减少冲突和性能损耗。v1.4版本强化了对CTV和原生App场景的支持,而v1.5新增了画中画检测等功能。集成流程需通过IAB技术实验室注册下载,并遵循严格的命名空间规则。测试阶段需嵌入验证脚本并通过指定工具验证

帅次的博客 1185

day02【抽象类,接口、代码块、final、单例、枚举】

abstract是抽象的意思,用于修饰方法方法和类,修饰的方法是抽象方法,修饰的类是抽象类。我们已经学完了抽象类,抽象类中可以用抽象方法,也可以有普通方法,已经构造器,成员变量等。那么什么是接口呢?接口是更加彻底的抽象,接口中全部是抽象方法。(JDK8之前),接口同样是不能创建对象的。//接口的定义格式: 修饰符 interface 接口名称 {// 抽象方法 } // 修饰符:public|缺省 // 接口的声明:interface // 接口名称:首字母大写,满足“驼峰模式”

Abdul_DD的博客 286

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【java 13天进阶Day02】抽象类、接口、代码块,final、单例、枚举

ps:在Spring Boot中,通常推荐使用接口进行依赖注入,而不是具体的实现类。开发中有很多类的对象我们只需要一个,例如虚拟机对象,任务管理器对象,对象越多约占内存,有些时候只需要一个对象就可以实现业务,单例可以节约内存,提高性能。接口体现的是规范思想,实现接口的子类必须重写接口的全部抽象方法。如果实现了多个接口,多个接口中存在同名的静态方法并不会冲突。当一个类实现多个接口时,多个接口中存在同名的默认方法。接口与接口的多继承(类与类是单继承、类与接口多实现),类与类是继承关系,类与接口是实现关系。

weixin_45658815的博客 1031

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java基础6 final、枚举、抽象类、接口

用abstract修饰的类,不能直接实例化,需被子类继承。概念核心作用典型应用场景final防止修改(常量、不可继承)配置参数、工具类单例模式全局唯一实例数据库连接池、日志管理器枚举类定义固定常量集状态码、选项配置抽象类定义方法骨架,强制子类实现模板方法模式、通用功能复用接口定义规范,支持多继承设备标准(如 USB)、插件扩展模板方法模式固定流程,灵活步骤实现算法骨架(如烹饪、订单处理)

weixin_72158155的博客 1127

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java 入门必学:final、单例、枚举、抽象类、接口

/ 抽象方法System.out.println("睡觉");final→ 限制(不能改/不能继承)单例→ 控制对象数量枚举→ 固定常量集合(更安全)抽象类→ “是什么”(is-a)接口→ “能做什么”(can-do)接口定能力,抽象类做模板,枚举管常量,单例控实例,final保约束如果你想继续深入,我可以帮你👇✅ 出一套「面试高频考题(final/接口/单例)」✅ 或做「设计模式入门(含代码实战)」✅ 或带你写一个“小项目综合应用这些知识点”

likuolei的博客 340

day02-抽象类,接口、代码块、final、单例、枚举

java基础【抽象类,接口、代码块、final、单例、枚举】 第一章 抽象类 1.1 概述 1.1.1 抽象类引入 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了(因为子类对象会调用自己重写的方法)。换句话说,父类可能知道子类应该有哪个功能,但是功能具体怎么实现父类是不清楚的(由子类自己决定),父类完全只需要提供一个没有方法体的方法签名即可,具体实现交给子类自己去实现。我们把没有方法体的方法称为抽象方法。Java语法规定

后端麻酱的博客 201

day09 多态抽象类接口

1:final关键字可以干什么?有什么特点? 2:final关键字的面试题? 3:多态是什么,前提是什么? 4:多态中成员访问的特点? 5:多态的好处及弊端?如何解决多态的弊端? 6:什么是向上转型?什么是向下转型? 7:多态练习 8:抽象类概述及其特点? 9:抽象类成员特点? 10:抽象类练习? 11:抽象类的小问题 12:接口的概述及其特点? 13:接口的成员特点? 14:接口的练习 15:抽象类和接口的区别?

喝醉酒的小白 4232

java学习笔记day09 final、多态、抽象类、接口

java学习笔记day09 思维导图 final 、 多态 、 抽象类 、 接口 (都很重要) 一、final 二、多态 多态中的成员访问特点⭐ 【P237】 多态的好处 【P239] 多态的弊端 向上转型、向下转型 ⭐【P241】 形象案例:孔子装爹 多态的问题理解: class 孔子爹 { public int age = 40; public void teach() { System.out.println("讲解JavaSE"); }

时雨的博客 319

java-抽象方法与抽象类

e[0]=new SalariedEmployee("马国森", 123, new Mydate(2001, 1, 1),5000);return "姓名,"+name+"数字,"+number+"生日"+birthday.toDateString();e[1]=new HourlyEmployee("王悦",123,new Mydate(2001,2,2),32,5);return year+"年"+month+"月"+day+"日";2、此方法称为抽象方法,此方法只有方法的声明,没有方法体。

qq_50926201的博客 869

day031:抽象类、抽象方法、final关键字

一、抽象方法概述 抽象方法:将共性的行为(方法)抽取到父类之后,发现该方法的实现逻辑无法在父类中给出具体明确,该方法就可以定义为抽象方法。 抽象类:如果一个类中出现了抽象方法,则这个类就必须定义为抽象类。 举例解释:猫类中有吃饭、喝水两个方法,狗类中也有吃饭、喝水两个方法,所以可以将这两个方法抽取为一个父类Anmial。但猫吃鱼、狗吃肉,吃饭这个方法无法在父类Anmial中具体明确(到底是定义为吃肉还是吃鱼呢?),所以可以将这个父类Anmial定义为抽象类,该类中的吃饭方法为抽象方法。用abstra

ZuoQi的博客 442

java笔记 Day 16 —— final关键字、抽象类

文章目录一、final关键字二、抽象类(abstract)抽象类的最佳实践—模板设计模式 一、final关键字 基本介绍 final 中文意思:最后的,最终的 final 可以修饰类、属性、方法 和 局部变量 在有以下需求的时候,就会使用到final: 当不希望类被继承的时候,可以使用 final来修饰[final class 类名] 当不希望父类的某个方法被子类覆盖/重写(Override)时,可以使用final关键字来修饰[访问修饰符 final 返回类型 方法名] 当不希望类的某个属性的值被修改

dfsdcvbhjnj的博客 295

Java基础day9(重写,多态,final、static关键字,抽象方法,抽象类)

(重写) 重写 重写前提: 前提是子类必须继承了父类 如果子类继承了父类以后,如果父类的方法满足不了我的要求,我可以在子类对父类的方法进行重写 重写的规则 子类的方法名、返回值类型必须和父类的方法名和返回类型一致 子类的访问修饰符不能小于父类的修饰符 子类和父类方法必须同为static或非static 多态 什么是多态?就是一个对象的多种形态 使用的多态的前提必须有继承或者接口的实现 1....

khhxuke的博客 281

0基础学java之Day14(Object、final、抽象类、接口)

/抽象类public abstract class 类名{//抽象方法为什么需要有抽象类父类是代表众多子类的共同特征,父类中的成员变量(即属性)、成员方法(即功能)是所有子类都有的。当事物的分类层次变多之后,越上层的父类成员越少,越上层的父类会变的越来越抽象。甚至出现在父类中某个方法无法给出适用于所有子类的方法体实现。

2301_81594623的博客 728

13天进阶Java笔记-day2-抽象类、接口、代码块、final、单例、枚举

父类指导子类一定要完成某个功能,但是每个子类完成的情况是不一样的。子类以后也只会用自己重写的功能,那么父类的该功能就可以定义成抽象方法,子类重写调用自己的方法。所以父类的该功能就可以定义为抽象的方法。拥有重写方法的类必须定义为抽象类。 抽象类的使用 抽象类是为了被子类继承 抽象类的特征 抽象类的特征是:有得有失抽象类存在的意义有两点:设计模式:就是前人或者软件行业在生产实战中发现的优秀软件设计架构和思想。后来者可以直接用这些架构或者思想就可以设计出优秀的软件,提高开发效率,提高软件可扩展性和可维护性。模板

qq_36178962的博客 277

面向对象day05(final;static final+常量;抽象方法;抽象类)

java三大特征:封装、继承、多态 一、final:最终的,不可改变的————单独应用几率低 1)修饰变量:变量不能被改变 2)修饰方法:方法不能被重写 3)修饰类:类不能被继承 (final的类不能被别人继承,但是它可以继承别人) 在Java中,方法默认是都能被重写的 class Aoo{ final int num = 5; void show(){ num = 55; 编译错误,final变量不能被改变 } } 二、static final常量(很常用)还是存数的 1)必须声明同时初始化 2)通过类名

qq_44949668的博客 145

JAVA基础day09

JAVA基础day09 文章目录JAVA基础day09final注意事项tips类加载顺序抽象类注意事项:why need?tips:模板方法what?接口定义深入了解instanceofinstanceof final final修饰的变量称之为最终常量 在程序运行期间其值不可发生改变 final修饰的类不可以被继承:太监类 final修饰的方法不可以被重写 注意...

weixin_41615926的博客 181
上一篇: Java基础笔记:Day_08 继承与多态
下一篇: Java基础笔记:Day_10 接口、匿名内部类
Panda不姓潘
博客等级 码龄8年 152粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值