Java笔记03-Constructor Override

Java笔记03-Constructor & Override

构造方法基本概念

构造方法是类中的一种特殊方法

它是在类创建对象(实例化)的时候自动调用的方法

这个和python中的__init__初始化魔术方法类似

可以在创建对象的时候进行参数的传递

默认送您的构造

一个类编译过后都需要有一个构造方法.如果程序中没有写的话

编译器在编译时就会帮你加上一个无参数的空的构造方法(称之为"默认的构造方法")

那要是你定义了构造方法了,编译器也不欠欠的帮你加了,它也懒

关于构造的建议

  • 当类中有成员变量,并且还不是常量的时候,建议提供两个版本的构造方法,一个无参数的构造,一个全属性的构造

  • 而类中所有成员变量都是常量或者干脆就没有成员变量的时候,建议不要写构造

成员方法重载

说白了就是同样名称的方法,可以有很多不同参数列表的版本,有的有参数,有的没有参数,而方法名一样

这样官方说能让类的设计变的更加优雅,我是没看出来

好像是能够一个方法处理不同的数据

这样的设计方式成为重载设计

this关键字

this就是代表对象本身(调用该方法的对象)
就像JavaScript中的this
就像python中的self

OOP三大特性之封装

封装的面向对象的三大特性之一,

如果代码不做限制,则很多属性值是无效的

封装就是保证属性值有效的技术

封装的步骤

  1. 属性(不是常量的)必须使用private修饰,确保外部变量无法直接进行赋值操作

  2. 提供操作属性的方法,一般都是读写属性方法,get属性和set属性方法

  3. 构造方法中,也要通过调用set和get方法来操作

static关键字

静态static关键字修饰属性或者方法

可以将对象层级从对象级升级成为类级别,在类加载的时候就可以调用准备好的属性或者方法

换句话说就是static修饰的可以直接进行调用

单例设计模式

设计模式是形成标准化流程的经验总结,是特定问题的固定的解决方案

单例设计思路:

1. 先private构造,阻止外部去创建对象
2. 本类提供一个对象,定义一个private static 的本类类型的属性  
3. 对外提供get方法,将唯一的对象返回到外部  

单例分为饿汉式和懒汉式两种写法

java中单例模式是一种常见的设计模式,在实际开发中比较常用
具体详细内容可以参考:Java设计模式之单例模式

OOP三大特性之继承

继承就是子类复用父类的代码

使用关键字extends表示类和类之间的继承关系

class Son extends Father{// ... 
}

Java中不能多继承,可以通过接口的多实现来弥补类的多继承

继承中的构造方法

子类必须通过super();关键字才能调用父类中的构造方法

这样才能好好的初始化来自父类的成员变量

this()super()必须出现在构造的第一行,因此不可能同时出现

方法的重写

  • 有些父类写好的方法,子类它不太喜欢

子类就可以使用方法重写(覆盖)来改变他爸爸给他的方法

  • 方法重写的原则:
1. 相同的方法名称,相同的参数列表,相同的返回值类型或者返回子类
2. 访问权限不能变小,可以变大
3. 不能抛出更大的异常
  • 在子类重写的方法中,可以通过super关键字调用父类的"原始"方法.
  • static 方法重写之后还是static

OOP三大特性之多态

一母生九子,九子各不同

Person p = new Student();
  1. 只能使用母类中定义的属性和方法
  2. 不能直接使用子类中扩展的属性和方法
  3. 如果子类重写了方法,静态方法调父类的,非静态方法调子类的
    原因:
    编译时,p被认为是Person类型;但在运行时是Student类型.在内存中其实是子类对象.

总结:
子即为多态

多态特点

多态时,如果想要把扩展的属性和方法调用出来,需要做类型转换

父类子类需要做强制类型转换(向转型)
子类父类需要做强制类型转换(向转型)

对象强制类型转换是一种还原行为,必须内存中是该类型的对象才能成功

instanceof运算符

instanceof就是判断对象的类型,如果是该类型返回true,不是返回false

语法格式:

对象 instanceof 类型
obj instanceof Object
p instanceof Person

严格的来说,在进行对象的向下转型之前,都得instanceof一下才能

这个instanceof必须发生在父子之间才行哦!

抽象类

用abstract修饰的类,这个类吧就厉害了

它不能实例化,这可咋用啊

唉,对 就是用来继承的,你不能实例化你儿子行啊

抽象方法所在类必须是抽象类,而子类如果不是抽象类,一定要重写父类中的抽象方法才行(实现父类的方法体)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455491.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生物信息学概论_大学专业详解系列83——生物信息学(理学学士)

生物信息学(理学学士)毕业生应具备的知识和能力(1)掌握扎实的数学、物理、化学基础理论和基本知识;(2)掌握生物学专业基础知识和信息处理的专门知识;(3)掌握普通生物学、细胞生物学、遗传学、分子生物学、生物数据库管理系统、生物信息学、基因组学、蛋白…

R语言时间序列数据应用xts

zoo是时间序列的基础库,是面向通用的设计。 xts 是对时间序列库(zoo) 的一种扩展实现。xts 类型继承了zoo 类型,丰富了时间序列数据处理的函数。 一、xts对象的结构和定义 1、xts对象是一个具有时间索引的观测值矩阵,结构如下: xts matrix …

Java笔记04-核心类库

Java笔记04-核心类库 Object类 1.1 常用的包 java.lang包 -该包是Java语言中的核心包,该包中的内容由Java虚拟机自动导入 如:String类,System类等java.util包- 该包是Java语言中的工具包,里面包含了大量的工具类和集合类等java.io包 是输入输出包,包括读写各种设备java.net…

Butterknife全方位解析

概述 Butterknife是供职于Square公司的JakeWharton大神开发的开源库,使用这个库,在AS中搭配Android ButterKnife Zelezny插件,可以大大提高开发的效率,从此摆脱繁琐的findViewById(int id),也不用自己手动bind(int id)…

Linux下编译FFMpeg

环境:RedHat AS4  1。首先获取ffmpeg  通过svn下载:  从 http://subversion.tigris.org下载SVN客户端程序。   先装subversion,确保已经安装了apr和apr-util,在apache.org网站能下到  wget http://subversion.tigris.or…

论文笔记 Aggregated Residual Transformations for Deep Neural Networks

这篇文章构建了一个基本“Block”,并在此“Block”基础上引入了一个新的维度“cardinality”(字母“C”在图、表中表示这一维度)。深度网络的另外两个维度分别为depth(层数)、width(width指一个层的channel的数目)。 首…

matlab 归一化_机器学习中如何用Fscore进行特征选择(附Matlab代码)

作者:kervin编辑:阿吉 目前,机器学习在脑科学领域的应用可谓广泛而深入,不论你是做EEG/ERP研究,还是做MRI研究,都会看到机器学习的身影。机器学习最简单或者最常用的一个应用方向是分类,…

Java笔记05-Collection、泛型、迭代器

Java笔记05-Collection、泛型、迭代器 【Collection、泛型】 主要内容 Collection集合迭代器增强for泛型 第一章 Collection集合 1.1 集合概述 在前面基础班我们已经学习过并使用过集合ArrayList ,那么集合到底是什么呢? 集合:集合是java中提供的一种容器&a…

IOS安装CocoaPods完整流程

作为一个底层系统大菜鸟,又搞过几年ios来说,安装一个CocoaPods是一件蛋痛的事~ 说懂又懂,说不懂又不懂. 由于安装过程比較复杂,步骤较多,而网上教程又比較零散,并且有一些是扯蛋的,所以本篇文章主要从头到位依据自身安装经历记录每一条终端指令,至于里面的原理和一些概念性的东…

重装TCP/IP

在Windows XP的网络组件列表里,Internet 协议 (TCP/IP)的"卸载"按钮是灰色不可选状态。这是因为传输控制协议/Internet 协议 (TCP/IP) 堆栈是 Microsoft XP/ 2003 的核心组件(TCP/IP协议是Windows XP的默认协议),不能删除。所以Windows XP不允许卸载TCP/I…

linux 修改时区_教你在Centos8中更改时区

对于许多与系统相关的任务和进程,使用正确的时区是必不可少的。例如,cron守护进程使用系统的时区执行cron作业,日志文件中的时间戳基于同一系统的时区。环 境CentOS 8检查现在的时区timedatectl是一个命令行实用程序,允许您查看和…

UVA12511 - Virus(DP+最长公共上升子序列)

题目链接: https://vjudge.net/problem/UVA-12511 题目大意: 给定两个序列,求出两个序列的最长公共上升子序列(严格上升)。 解题过程: 比赛的时候没有做出来,非常咸鱼的一场比赛,当时…

Java笔记06-Map集合

Map集合 学习目标 能够说出Map集合特点使用Map集合添加方法保存数据使用”键找值”的方式遍历Map集合使用”键值对”的方式遍历Map集合能够使用HashMap存储自定义键值对的数据能够使用HashMap编写斗地主洗牌发牌案例 Map集合概述 啥也不用说,Map集合就相当于python中的字典…

理解什么是前后端分离

HTML、CSS、JS。 AJAX或Fetch。 学习一个前端的框架, React或者Vue或者Angularjs2都可以。 学会一个前端的路由框架, 如React-Router或者Vue-Router。 在学会3的基础上你肯定已经搭建好前端的开发环境了,所有和后端的交互走AJAX或者Fetch…

帧间、帧内像素块预测

一、像素块预测 H.264/ AVC标准中的基本预测技术是基于块,而不是基于对象的。它的编码器是利用混合的编码方案来提高编码效率,这些方案包括高级的预测技术和有效熵编码技术。在运动预测中它使用不同的块的大小进行预测,以树结构的方式来组织…

高性能mysql 第10章 复制

复制功能不仅能够构建高可用的应用,同时也是高可用性,可扩展性,灾难恢复,备份以及数据仓库等工作的基础。 mysql支持两种复制方式:基于语句的复制和基于行的复制。基于语句的复制(也成为逻辑复制&#xff0…

vb6在后台将窗体保存到图片_如何将寺库网多个商品图片一键分类保存到一个目录...

寺库网是全球最大的奢侈品网上在线购物平台,那么我们怎样可以从寺库网上一键批量采集到多个宝贝商品图片,并分类保存到电脑呢?今天小编给大家带来一款专业电商图片链接采集软件【载图助手】,它支持平台高达141个,均可支…

Java笔记07-List、Set、数据结构、Collections

Java笔记07-List、Set、数据结构、Collections 主要内容 数据结构List集合Set集合Collections 第一章 数据结构 2.1 数据结构有什么用? 当你用着java里面的容器类很爽的时候,你有没有想过,怎么ArrayList就像一个无限扩充的数组&#xff…

Apache安装问题:configure: error: APR not found . Please read the documentation

参考:http://cuisuqiang.iteye.com/blog/2068794 http://www.cnblogs.com/Anker/p/3355573.html pcre: https://ftp.pcre.org/pub/pcre/ http://www.linuxidc.com/Linux/2012-06/62289.htm 1. 不赞成去卸载httpd的东西。 2. server上可以存在多个apache。一个是rpm&…

浮动与定位

2019独角兽企业重金招聘Python工程师标准>>> 一.浮动:float:一个元素浮动时,其他内容会"环绕"该元素. 浮动元素的外边距不会合并浮动的元素不能超出其包含快的内边界浮动元素彼此会避免重叠浮动元素的顶端不能比之前所有浮动元素或块级元素的顶端更高如果…