一 面向对象之类与对象
1.1 类与对象
1 | # 类: |
1.1.1 类定义规范
1 | // []内可以省略,|表示或单两个关键字不能同时出现 |
1.1.2 Java类的属性
1 | // 语法 |
1.1.3 创建一个类
1 | //1 定义一个Person类 |
1.1.4 成员方法
1 | // 语法 |
1.1.5 构造方法
1 | // 构造方法与类同名,没有返回值,不需要void关键字,可以有多个,表示多种构造方式 |
1.1.6 this关键字
1 | // this在类内部使用,代指当前实例[对象],等同于python的self |
1.1.7 访问控制修饰符
访问范围 | private | friendly(默认) | protected | public |
---|---|---|---|---|
同一个类 | 可访问 | 可访问 | 可访问 | 可访问 |
同一包中的其他类 | 不可访问 | 可访问 | 可访问 | 可访问 |
不同包中的子类 | 不可访问 | 不可访问 | 可访问 | 可访问 |
不同包中的非子类 | 不可访问 | 不可访问 | 不可访问 | 可访问 |
1 | //1 private |
1.1.8 静态变量和静态方法(static)
1 | // 在类中,使用 static 修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有。 |
二 面向对象之继承
2.1 继承格式
1 | // 在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: |
2.2 构造方法
1 子类如果没写构造方法,默认使用父类无参构造,本案例名字为:固定名字
1 | // 1 子类如果没写构造方法,默认使用父类无参构造,本案例名字为:固定名字 |
2.3 super 与 this 关键字
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类
this关键字:指向自己的引用
1 | class Animal{ |
三 重写(Override)与重载(Overload)
1 | // 1 重写(Override)是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写 |
1 | class Animal{ |
四 面向对象之接口
1 | // ********************接口解释*************** |
4.1 接口声明
1 | [可见度] interface 接口名称 [extends 其他的接口名] { |
4.2 接口继承
1 | interface Duck { |
4.3 接口实现
1 | // 实现接口,必须实现接口中所有的方法 |
五 面向对象之抽象类
1 | import java.util.*; |
六 封装
1 | // java中一般不直接通过对象调用属性,而是通过方法来设置和获取属性【更安全】 |
七 多态
1 | // ***********多态解释********************** |
7.1 继承实现的多态
7.1.1 多态成员变量编译运行看左边
1 | public class Demo04 { |
7.1.2 多态成员方法:编译看左边,运行看右边
1 | public class Demo04 { |
7.1.3 子类增加独有方法walk()
1 | import java.util.*; |
7.1.4 引用类型转换
1 | // 1 向上转型:【儿子变父亲】,多态本身是子类向父类向上转换(自动转换)的过程,这个过程是默许的,当父类引用指向一个子类对象时,就是向上转型 |
1 | import java.util.*; |
7.2 抽象类实现的多态
1 |
|
7.3 接口实现的多态
1 | import java.util.*; |
八 枚举
1 | // Java 枚举是一个特殊的类,一般表示一组常量, |
1 | import java.util.*; |
九 包(package)
1 | // 为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。 |
9.1 创建包
1 | // 右键,新建包----》其实就是文件夹 |
9.2 引入包,并使用包中的类
1 | import com.justin.*; |
十 常用加密
10.1 字符串与字节
1 | // 反编译回来的代码有些字符串使用字节表示,隐藏真正字符串 |
10.2 UUID
1 | // java |
10.3 随机值
1 | // 随机生成80位,10个字节 |
1 | # python 3.9 |
1 | # 3.9以前 |
10.4 时间戳
1 | String t1 = String.valueOf(System.currentTimeMillis() / 1000); // 秒级别 |
1 | import time |
10.5 十六进制的字符串
1 | s='pengyuyan'.encode('utf-8') |
10.6 md5
1 | import hashlib |
10.7 base64编码
1 | String name = "彭于晏"; |
1 | import base64 |
__END__