我是靠谱客的博主 害羞背包,最近开发中收集的这篇文章主要介绍JavaSE自学笔记011_Real(继承、super、重写、Object类),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JavaSE自学笔记011_Real(继承、super、重写、Object类)

(一)继承:关键字:extends 单向继承

子类被实例化的时候,也会实例化一个父类对象
关键字:this指的是当前子类 可访问子类的属性和方法
super指的是子类的父类
可访问父类的属性和方法

继承的总结:
(1)子类继承了父类的所有非私有的属性和方法,可以直接调用。
(2)子类在构造的时候,一定会构造一个父类,默认调用父类的无参构造器
(3)子类如果希望 指定去调用父类的某个构造器,则显式的调用一下:super(参数列表)
(4)super和this当作构造器使用时,必须放在狗在其的第一行,所以只能二选一
(5)Java所有类都是Object类的子类,Object是所有类的基类
(6)子类最多只能继承一个父类(直接继承),Java是单继承机制,问可以使用连续继承来实现多继承

(二)方法重写:注解:@override

子类可以继承父类的犯法方法,但是有时候子类的方法与父类的方法需要不宜一样,所以子类可以度父类的 方法进行重写

重载和重写的区分:
(1)范围:重载是在本类中进行,重写是在父类与子类之间进行
(2)方法名都是必须要一致
(3)形参列表:重载是类型个数或顺序不同,重写是必须一致
(4)返回值类型:重载没有要求,重写必须一致,或者子类得到返回值是父类的返回值的子类
(5)权限修饰:重载没有要求,重写子类不能缩小父类的访问权限

(三)final关键字

(1)被final修饰的变量不能被修改,这里有两层含义:如果final修室的是基础数据类型变量,则不能改变变量的值,如果是引用数据类型的变量,则引用指向不能被修改,相当于引用类型的地址不能变。
(2)被final修饰的方法不能被重写
(3)被final修饰的类不能被继承

(四)Object类

1、hashcode()方法:
(1)所有带native的方法都是本地方法,不适用Java写的,这个hashcode的返回值其实是实例化对象运行时的内存地址
(2)什么是hash算法?
一般翻译为“散列”,也有直接翻译为“哈希”的,就是把任意长度的输入(又叫做预映射 pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值
(3)hash算法的特点:
1)只能通过原文计算出hash值,而且每次计算都一样,不能通过hash值计算原文
2)原文的微小变化能够导致hash值发生巨大变化,这就是好的hash算法
3)一个好的hash算法还能够尽量避免发生hash值重复的情况,也叫做hash碰撞
(4)hash算法的用途
1)密码的保存:实际的工程当中我们一般不储存明文密码,而是将密码使用hash算法计算出hash值进行保存,这样密码丢失也不会使密码完全曝光
2)文件的校验,检查数据的一致性
(5)常见的hash摘要算法:
1)MD5
MD5信息摘要算法(Message-Digest Algorithm),一种被管饭使用的密码散列函数,可以产生一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致,MD5由美国密码学家罗纳德 李维斯特设计,于1992年公开,用以取代MD4算法,1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议使用其他算法,如SHA-2
算法实现:

public static void main(String[] args) throws Exception{
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] digest = md5.digest("123".getBytes());
System.out.println(Arrays.toString(digest));
}
输出结果:[32, 44, -71, 98, -84, 89, 7, 91, -106, 75, 7, 21, 45, 35, 75, 112]
	2)SHA-1
SHA-1(Secure Hash Algorithm 1
安全散列算法1)是一种密码散列函数,美国国家安全局设计,并且由美国国家技术标准研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式位40个十六进制数。
3)SHA家族
正式名称为SHA的家族第一个成员发布于1993年,然而人们给他取了一个非正式的名称SHA-0以避免与他的后者混淆,两年之后,SHA-1,第一个SHA的后继者发布,另外还有四类变体,曾经发布以提升输出的范围和变更一些细微设计SHA-224、SHA-384、Shadow-512(这些有时候也被称为SHA-2)
SHA-1代码实现
public static void main(String[] args) throws Exception{
MessageDigest sha1 = MessageDigest.getInstance("SHA1");
byte[] digest = sha1.digest("123".getBytes());
System.out.println(Arrays.toString(digest));
}
输出结果:
[64, -67, 0, 21, 99, 8, 95, -61, 81, 101, 50, -98, -95, -1, 92, 94, -53, -37, -66, -17]
SHA-256代买实现
算法使用的hsah值长度为256public static void main(String[] args) throws Exception{
MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
byte[] digest = sha256.digest("123".getBytes());
System.out.println(Arrays.toString(digest));
}
输出结果:
[-90, 101, -92, 89, 32, 66, 47, -99, 65, 126, 72, 103, -17, -36, 79, -72, -96, 74, 31, 63, -1, 31, -96, 126, -103, -114, -122, -9, -9, -94, 122, -29]
SHA-512代码实现
算法使用的额哈希值长度位512public static void main(String[] args) throws Exception{
MessageDigest sha512 = MessageDigest.getInstance("SHA-512");
byte[] digest = sha512.digest("123".getBytes());
System.out.println(Arrays.toString(digest));
}
输出结果:
[60, -103, 9, -81, -20, 37, 53, 77, 85, 29, -82, 33, 89, 11, -78, 110, 56, -43, 63, 33, 115, -72, -45, -36, 62, -18, 76, 4, 126, 122, -79, -63, -21, -117, -123, 16, 62, 59, -25, -70, 97, 59, 49, -69, 92, -100, 54, 33, 77, -55, -15, 74, 66, -3, 122, 47, -37, -124, -123, 107, -54, 92, 68, -62]

2、ToString()方法

3、equals()方法
重要总结: == 与 equals的区别
(1)==可以比较基础数据类型也可以比较引用数据类型,比较基础数据类型时比较的是具体的值,比较引用型数据类型时实际上比较的是内存地址。
(2)equals()方法是Object类的一个方法,默认实现的是 两个=号。
(3)我们可以重写equals方法,是我们的特性需求,比如String就重写了equals方法,所以字符串调用equals比较的是每一个字符。

4、finalize()方法
(不用,已过时)垃圾回收,准备释放资源时会调用finalize()方法
5、clone()方法
克隆就是在内存里边复制一个实例对象,但是Object的克隆方法只能浅拷贝,同时必须实现Cloneable接口,重写clone方法

最后

以上就是害羞背包为你收集整理的JavaSE自学笔记011_Real(继承、super、重写、Object类)的全部内容,希望文章能够帮你解决JavaSE自学笔记011_Real(继承、super、重写、Object类)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部