Java学习总结:13
抽象类
定义:
所谓抽象类就是指在普通类的结构里面增加抽象方法的组成部分,抽象方法指的是没有方法体的方法,同时抽象方法还必须使用abstract关键字进行定义。拥有抽象方法的类一定属于抽象类,抽象类要使用abstract声明。
关于抽象方法与普通方法:
1.所有的普通方法上面都有一个"{}",来表示方法体,有方法体的方法一定可以被对象直接调用;
2.抽象类中的抽象方法没有方法体,声明时不需要加"{}",但是必须有abstract声明,否则在编译时将出现语法错误。
例:定义抽象类
abstract class A{public void fun(){System.out.println("存在方法体的方法");}//此方法并没有方法体的声明,并且存在abstract关键字,表示抽象方法public abstract void print();
}
注意:抽象类不能直接实例化对象。
抽象类的使用原则:
1.抽象类必须有子类,即每一个抽象类一定要被子类所继承,但是在Java中每一个子类只能够继承一个抽象类,所以具备单继承局限;
2.抽象类的子类(子类不是抽象类)必须覆写抽象类中的全部抽象方法(强制子类覆写);
3.依靠对象的向上转型概念,可以通过抽象类的子类完成抽象类的实例化对象操作。
例:正确使用抽象类
abstract class A7{ //定义一个抽象类public void fun(){ //普通方法System.out.println("存在方法体的方法");}//抽象方法public abstract void print();
}
//一个子类只能继承一个抽象类,属于单继承局限
class B7 extends A7{public void print(){ //抽象类的子类,而且是一个普通类System.out.println("666"); //强制要求覆写的方法}
}
public class Test1_1_4_1 {public static void main(String args[]){A7 a=new B7(); //向上转型a.print(); //被子类覆写过的方法a.fun();}
}
//结果
//666
//存在方法体的方法
抽象类的相关限制
1.抽象类里面由于会存在一些属性,那么在抽象类中一定会存在构造方法,目的是为属性初始化,并且子类对象实例化时依然满足先执行父类构造再调用子类构造的情况;
2.抽象类不能使用final定义,因为抽象类必须有子类,而final定义的类不能有子类;
3.抽象类中可以没有任何抽象方法,但是只要是抽象类,就不能直接使用关键字new实例化对象;
4.抽象类中依然可以定义内部抽象类,而实现的子类也可以根据需要选择是否定义内部类来继承抽象内部类。
例:定义抽象类内部的内部类
abstract class A8{ //定义一个抽象类abstract class B8{ //定义内部抽象类public abstract void print();}
}
class X extends A8{ //继承static内部抽象类public void print(){System.out.println("666");}class Y extends B8{ //定义内部抽象类的子类,此类不是必须覆写public void print(){ //方法覆写}}
}
5.外部抽象类不允许使用static声明,而外部的抽象类允许使用static声明,使用static声明的内部抽象类就相当于是一个外部抽象类,继承的时候使用“外部类.内部类”的形式表示类名称。
例:利用static定义的内部抽象类为外部抽象类
abstract class A8{ //定义一个抽象类static abstract class B8{ //static定义的内部类属于外部类public abstract void print();}
}
class X extends A8.B8{public void print(){ //继承static内部抽象类System.out.println("666");}
}
public class Test1_1_4_2 {public static void main(String args[]){A8.B8 ab=new X(); //向上转型ab.print();}
}
//结果
//666
6.在抽象类中,如果定义了static属性或方法时,就可以在没有对象的时候直接调用。
例:在抽象类中定义static方法
abstract class A8{ //定义一个抽象类public static void print(){ //static方法System.out.println("666");}
}
public class Test1_1_4_2 {public static void main(String args[]){A8.print(); //直接调用static方法}
}
//结果
//666
抽象类应用——模板设计模式
例:在抽象类的普通方法中调用抽象方法
abstract class A8{ //定义一个抽象类public void fun(){ //此为普通方法this.print(); //在普通方法中直接调用抽象方法}public abstract void print(); //此为抽象方法
}
class X extends A8{ //抽象类必须有子类public void print(){System.out.println("666");}
}
public class Test1_1_4_2 {public static void main(String args[]){A8 a=new X(); //通过子类实例化抽象化对象a.fun(); //抽象类中的普通方法}
}
相关文章:

九度OJ 1339:ACM (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:712 解决:379 题目描述:今年的ACM世界总决赛快要开始了,需要有一个排名算法来对每支队伍进行现场排名。ACM组委会把这个任务交给了你࿰…

2022-2028年中国汽车印制电路板(汽车PCB)产业深度调研及投资前景预测报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国汽车印制电路板(汽车PCB)行业市场行业相关概述、中国汽车印制电路板(汽车PCB)行业市场行业…

【VMCloud云平台】SCO(四)流程准备
在经过这么多介绍文章后,我们终于可以开始拨开云雾见真章了,今天来做一些制作流程前的预热。(下图红色为部署中,紫色为实施完成,蓝色为计划中): 1、 流程,我们要了解它,可…

基本类型的数值转换
为了方便运算及调用一些方法,我们需要将基本类型的数值转换为对象;不过转换的时候需要特别注意好它们的类型到底是什么,需要调用方法的类名是哪个!特别注意是Byte常量池的相关问题();gc()垃圾回收机制的话&…

Java学习总结:14
接口 接口的基本定义 接口严格来讲属于一个特殊的类,而且这个类里面只有抽象方法与全局变量。 在java里面可以使用interface关键字来实现接口的定义。 例:定义接口 interface A{ //定义接口public static final String MSG"Hello World"; /…

Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity
Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity MP4 |视频:h264,1280x720 |音频:AAC,44.1 KHz,2 Ch 流派:电子学习|语言:英语原英文字幕 (机译中文字幕)|时长:15章 70…

第十二周 11.15-11.21
11.15 补个BC。 HDU 5565 Clarke and baton 没太懂题解怎么搞。反正挺暴力过了。 1 #include <iostream>2 #include <cstdio>3 #include <map>4 #include <vector>5 #include <algorithm>6 using namespace std;7 typedef long long LL;8 const …

Java 多线程的基本方式
Java 多线程的基本方式 基础实现两种方式: 通过实现Callable 接口方式(可得到返回值):

一次HP 阵列卡排障
公司使用的是HP gen8机器,用的是p420i阵列卡,同时在系统的另一端,nagios监控系统配合nrpe脚本check_hpasm定期检测硬件健康。最近为了让机器更带劲,加上了SSD硬盘,机械硬盘仅用作大容量存储,在感受速度与激…

集合、泛型、增强for
对于集合,首先要明确的是最顶层的接口是Collection接口类,其包含一些基本的方法以便子类调用,不过在定义的时候最好定义好数据类型,以免遍历时还得必须进行向上转型;特别注意的是其没有关于下标的方法。同时为了方便遍…

【强推】Blender制作逼真人物角色完整案例视频教程
【强推】Blender制作逼真人物角色完整案例视频教程 【强推】Blender制作逼真人物角色完整案例视频教程 时长53h 30m 1280X720 MP4 含教程工程文件 共九大模块 130小节课程 教程大小:12.9G 语言:英语机译中文字幕(含原英文字幕文件) Victory…

Java学习总结:15
Object类 Object类的基本定义 Object类是所有类的父类,也就是说任何一个类在定义时如果没有明确地继承一个父类,那它就是Object类的子类。 取得对象信息:toString() 在Object类中的toString()方法设计时,由于要考虑其可以满足…

ECMAScript——引用数据类型之array
array 转载于:https://www.cnblogs.com/cataway/p/4967058.html

2022-2028年中国炼钢行业市场研究及前瞻分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国炼钢行业市场行业相关概述、中国炼钢行业市场行业运行环境、分析了中国炼钢行业市场行业的…

mvc存储Cookie和读取Cookie方法
mvc存储Cookie和读取Cookie方法://存储HttpCookie cookie new HttpCookie("User");System.Text.Encoding enc System.Text.Encoding.GetEncoding("gb2312");cookie["id"] HttpUtility.UrlEncode(logid.ToString(), enc);cookie[&q…

AJAX 简介
什么是 AJAX ? AJAX 异步 JavaScript 和 XML。 AJAX 是一种用于创建快速动态网页的技术。 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 传统的网…

c4d跟踪特效合成视频教程 Master Motion Tracking with Cinema 4D
c4d跟踪特效合成视频教程 Master Motion Tracking with Cinema 4D MP4 |视频:h264,1280720 |音频:aac,48000 Hz 语言:英语机译中文字幕 |尺寸:4.9 GB |持续时间:5小时2分钟 你将学到什么 百度…

[转]Getting Start With Node.JS Tools For Visual Studio
本文转自:http://www.c-sharpcorner.com/UploadFile/g_arora/getting-started-with-node-js-tools-for-visual-studio/ Table of contents 1. Introduction 2. What Node.JS is 3. How to install Node.JS 4. Lets Start by Creation of a Simple App Pre-requites…

Java学习总结:16
匿名内部类 匿名内部类指的是没有名字的内部类,其必须在抽象类或接口基础上才可以定义。 例:采用匿名内部类简化类的定义 interface Message{ //定义接口public void print(); } public class Test1_1_4_9 {public static void main(String args[]){fu…

Java 多线程概述
多线程技术概述 1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间。线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换、并发执行,一个进程最少有一个线程&am…

nginx图片过滤处理模块http_image_filter_module安装配置笔记
http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽…

Centos7 安装 telnet 服务
准备写一个 django-webtelnet(运维管理系统集成后管理网络设备),但是手边没有现成的网络设备资源可以测试,那就研究下 Centos7 下安装 telnet-server 吧。 安装 yum -y install xinetd telnet telnet-server telnet-server 是以 x…

Zbrush制作手榴弹案例讲解学习教程
Sculpting In Zbrush- Project Grenade! MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更准确) |时长:44节课(11h 43m) |大小解压后:11 GB 含课程素材 云桥网络…

Winform控件缩写
控件名称 缩写 Buttom按钮 Btn CheckBox复选框 Chk ColumnHeader视图列表头 Col ComboBox组合框 Cbo ContextMenu快捷菜单 Ctm DataGrid数据网格控件 Dg DataGridView数据网格视图控件 Dgv DteTimePicker时间输入框 Dtp DomainUpDown数值框 Dud Form窗体 …

Java习题:1
假设类X是类Y的父类,下列声明对象x的语句中不正确的是( )。 A.X xnew X(); B.X xnew Y(); C.Y xnew Y(); D.Y xnew X(); 答案:D 向下转型操作本身是有前提条件的,必须发生向上转型后才可以发生向下转型。 各个选项的代码实现: …

2022-2028年中国廉价航空行业深度调研及投资前景预测报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国廉价航空行业市场行业相关概述、中国廉价航空行业市场行业运行环境、分析了中国廉价航空行…

【SSRS】入门篇(二) -- 建立数据源
原文:【SSRS】入门篇(二) -- 建立数据源通过 【SSRS】入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目; 接下来,我们以 AdventureWorks2012 示例数据库,讲下如何建立数据源;(AdventureWorks2012 下载) 1、解决…

k8s相关的面试题
k8s相关的面试题 https://blog.csdn.net/huakai_sun/article/details/82378856 posted on 2019-07-30 20:33 竹径风声 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/girl1314/p/11272568.html

CG游戏道具全流程制作视频教程 Artstation – Stylized Game Asset
CG游戏道具全流程制作视频教程 Artstation – Stylized Game Asset 时长:9h 30m 含项目文件 1920X1080 MP4 语言:英语机译中文字幕 教程大小:4G 标题:Artstation–风格化游戏资产 云桥网络 获qu 教程 信息: 内容&a…

Java学习总结:17
包及访问控制权限 包的定义 在Java中使用package关键字来定义包,此语句必须写在xxx.java文件的首行。 例:定义包 package com.study.Demo; //定义程序所在包,此语句必须放在首行public class Hello {public static void main(String args[…