Java基础部分
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
1. 封装
2. 继承
3. 抽象类
4. 接口
5. 多态
1. 封装
1)作用:
属性封装(private),即包装,不给外部看见。
2)被封装的属性必须用setter 和getter方法来设置和取得内容。
3)可以用setter设置属性,限制。(比如setAge,年龄限制在多少)
2. 继承
继承是多态的前提,如果没有继承,就没有多态。
1)作用:
解决代码重复(重用)的问题。
2)格式:
class 子类 extends 父类{}
3)限制:
①Java不允许多重继承,但允许多层继承。(单继承局限)
即,一个子类只能有一个父类,一个父类可以有多个子类,子类的子类叫孙子类。
②子类只能继承父类的公有属性,private属性不能继承,只能利用setter或getter方法进行间接访问。
③实例化子类对象时会默认先执行父类构造(默认使用无参构造),调用父类构造的方法体先执行,再实例化子类对象并且调用子类的构造方法。(对于子类构造来说,相当于隐含super())
4) 在继承中super与this的用法与区别:
this用于调用属性 调用方法 调用构造方法。
super使用注意事项: this使用注意事项
- super必须出现在子类的方法或构造方法中。
- 用于访问父类成员,例如父类的属性 方法 构造方法。
- 访问权限有限制,无法通过super访问private成员
- 通过this调用构造方法,仅仅在类的构造方法中才能使用。
- 函数参数或函数中的局部变量和成员变量同名时, 则需要用"this.成员变量"来引用成员。
- 引用该函数当前对象时,直接用this。
3.抽象类
-
1)抽象方法:
就是加上abstract关键字,然后去掉大括号。(没有方法体)
2)抽象类:
有抽象方法且在class前加上了abstract的类。
public abstract class Animal{
//这是一个抽象方法,代表吃东西,但是具体吃什么不确定
public abstract void eat();
//普通方法
public void normalMethod(){
}
}
有抽象方法的类一定属于抽象类,抽象类不一定有抽象方法。
4)如何使用:
①抽象类不能直接new。
原因:因为抽象方法没有方法体,而没有方法体的方法如何调用,不能调用如何产生实例化对象?
②必须用一个子类来继承抽象类。
即每一个抽象类一定要被子类所继承(使用extends)关键字,因为Java的单继承局限,所以一个子类只能够继承一个抽象类。
③抽象类的子类(子类不是抽象类)必须覆写抽象类中的全部抽象方法(强制子类覆写 );
④依靠对象的向上转型概念,可以通过抽象类的子类完成抽象类的实例化对象操作。
//抽象类
public abstract class Animal{
//这是一个抽象方法,代表吃东西,但是具体吃什么不确定
public abstract void eat();
}
//继承抽象类的子类
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
//抽象类的使用
public class Demo {
public static void main(String[] args) {
// Animal animal = new Animal(); 错误写法!抽象类不能直接new
Cat cat = new Cat();
cat.eat();
}
}
5)限制:
①抽象类不能使用final定义,因为抽象类必须有子类,而final定义的类不能有子类。
②抽象类中可以没有任何抽象方法,但只要是抽象类,就不能直接使用关键字new实例化对象。
③抽象类中依然可以定义内部的抽象类,而实现的子类也可以根据需要选择是否定义内部类来继承抽象内部类。
④外部抽象类不允许使用static声明,而内部的抽象类允许使用static声明,此时内部抽象类就相当于是一个外部抽象类,
继承的时候使用 “外部内.内部类”的形式表示类名称。(static 定义的是类)
⑤在抽象类中,如果定义了static属性或方法,就可以在没有对象的时候直接调用。(此时可以没有子类)
4.接口
1)接口是什么:
接口是一种约定(标准)和能力。它是引用类型,最重要的是其中的抽象方法。
interface声明接口,implements实现接口。
接口作为标准用于解耦合以及不同层之间的连接桥梁。
2)定义:
如果是Java 7,那么接口中有:
①常量(public static final可以省略)
常量不可变,且必须进行复制。
常量名称全部大写,且用下划线进行分割。(规范)
②抽象方法(public abstract可以省略)
实现类必须覆盖接口的所有抽象方法,除非实现类是抽象类。
Java 8:
③默认方法(public 可以省略)
主要作用:解决接口升级的问题,即如果想实现其他功能,就只需在接口里添加默认方法,而无需在多个实现类中覆盖重写新的方法。
接口的默认方法,可以通过接口实现类对象直接调用,也可以被接口实现类进行覆盖重写。
④静态方法(public可以省略)
注意:不能通过接口实现类的对象来调用接口当中的静态方法。
用法:接口名称.静态方法名(参数);
5.多态性
1)多态是什么:
同一个引用类型,使用不同的实例而执行不同操作。(一个对象拥有多种形态,如小明是一个学生(学生形态),也是一个人(人类形态))
2)多态的好处:
让代码更加的灵活。
3)多态性:
●方法的多态性:重载与覆写;
重载:同一个方法名称相同,根据不同的参数类型及个数完成不同的功能。
覆写:同一个方法名称相同, 根据实例化的子类对象不同,所完成的功能也不同。
●对象的多态性:父子类对象的转换。(看new的是谁)
向上转型:子类对象变为父类对象。
向下转型:父类对象变为子类对象。
4)多态产生的条件:
继承、方法重写、父类的声明和子类的实例化。
5)举例:
动物 a = new 猫();
对象a是一只猫,也属于动物。
a.eat();//对象a可以使用动物中的eat或其他方法,但不可以调用子类猫中的方法。(除非子类方法覆写父类方法)
如果想调用子类特有的方法,借助向下转型。
6.final关键字
1)final:
在Java中final被称为终结器,在Java里面可以使用final定义类,方法和属性。
2)作用:
8.包——解决类的同名问题
包的作用:
1)文档分门别类,易于查找。
2)易于管理。
3)不同内容的文档可以放在不同的袋子中,拥有相同的名字,避免冲突。
创建包:使用package声明包,以分号结尾
包命名规范:包名由小写字母组成,不能以圆点开头或结尾
分别创建包和类:
创建项目→创建包→创建类
创建类的过程中创建类所在的包
创建项目→创建包和类
导入包:为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类
```java
```java
在这里插入代码片
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
接口中的常量定义和使用
- public static final 数据类型 常量名称 = 数据值;
public static final int num = 10 ;
一旦使用final修饰,则代表这个值不可改变。
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。2
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎