第一章 包
1.1 包
包在操作系统中其实就是一个文件夹。包是用来分门别类的治理技术,不同的技术类放在不同的包下,方便管理和保护。
在IDEA我的项目中,建包的操作如下:
包名的命名标准:
路径名.路径名.xxx.xxx// 例如:com.itheima.oa
- 包名个别是公司域名的倒写。例如:黑马是www.itheima.com,包名就能够定义成com.itheima.技术名称。
- 包名必须用”.“连贯。
- 包名的每个路径名必须是一个非法的标识符,而且不能是Java的关键字。
1.2 导包
什么时候须要导包?
状况一:在应用Java中提供的非核心包中的类时
状况二:应用本人写的其余包中的类时
什么时候不须要导包?
状况一:在应用Java外围包(java.lang)中的类时
状况二:在应用本人写的同一个包中的类时
1.3 应用不同包下的雷同类怎么办?
假如demo1和demo2中都有一个Student该如何应用?
代码示例:
//应用全类名的模式即可。//全类名:包名 + 类名//拷贝全类名的快捷键:选中类名crtl + shift + alt + c 或者用鼠标点copy,再点击copy Referencecom.itheima.homework.demo1.Student s1 = new com.itheima.homework.demo1.Student();com.itheima.homework.demo2.Student s2 = new com.itheima.homework.demo2.Student();
第二章 权限修饰符
2.1 权限修饰符
在Java中提供了四种拜访权限,应用不同的拜访权限修饰符润饰时,被润饰的内容会有不同的拜访权限,咱们之前曾经学习过了public 和 private,接下来咱们钻研一下protected和默认修饰符的作用。
- public:公共的,所有中央都能够拜访。
- protected:本类 ,本包,其余包中的子类都能够拜访。
默认(没有修饰符):本类 ,本包能够拜访。
留神:默认是空着不写,不是default
- private:公有的,以后类能够拜访。
public > protected > 默认 > private
2.2 不同权限的拜访能力
public | protected | 默认 | private | |
---|---|---|---|---|
同一类中 | √ | √ | √ | √ |
同一包中的类 | √ | √ | √ | |
不同包的子类 | √ | √ | ||
不同包中的无关类 | √ |
可见,public具备最大权限。private则是最小权限。
编写代码时,如果没有非凡的思考,倡议这样应用权限:
- 成员变量应用
private
,暗藏细节。 - 构造方法应用
public
,不便创建对象。 - 成员办法应用
public
,不便调用办法。
小贴士:不加权限修饰符,就是默认权限
第三章 final关键字
3.1 概述
学习了继承后,咱们晓得,子类能够在父类的根底上改写父类内容,比方,办法重写。
如果有一个办法我不想他人去改写外面内容,该怎么办呢?
Java提供了final
关键字,示意润饰的内容不可变。
final: 不可扭转,最终的含意。能够用于润饰类、办法和变量。
- 类:被润饰的类,不能被继承。
- 办法:被润饰的办法,不能被重写。
- 变量:被润饰的变量,有且仅能被赋值一次。
3.2 应用形式
3.2.1 润饰类
final润饰的类,不能被继承。
格局如下:
final class 类名 {}
代码:
final class Fu {}// class Zi extends Fu {} // 报错,不能继承final的类
查问API发现像 public final class String
、public final class Math
、public final class Scanner
等,很多咱们学习过的类,都是被final润饰的,目标就是供咱们应用,而不让咱们所以扭转其内容。
3.2.2 润饰办法
final润饰的办法,不能被重写。
格局如下:
修饰符 final 返回值类型 办法名(参数列表){ //办法体}
代码:
class Fu2 { final public void show1() { System.out.println("Fu2 show1"); } public void show2() { System.out.println("Fu2 show2"); }}class Zi2 extends Fu2 {// @Override// public void show1() {// System.out.println("Zi2 show1");// } @Override public void show2() { System.out.println("Zi2 show2"); }}
3.2.3 润饰变量-局部变量
- 局部变量——根本类型
根本类型的局部变量,被final润饰后,只能赋值一次,不能再更改。代码如下:
public class FinalDemo1 { public static void main(String[] args) { // 申明变量,应用final润饰 final int a; // 第一次赋值 a = 10; // 第二次赋值 a = 20; // 报错,不可从新赋值 // 申明变量,间接赋值,应用final润饰 final int b = 10; // 第二次赋值 b = 20; // 报错,不可从新赋值 }}
思考,上面两种写法,哪种能够通过编译?
写法1:
final int c = 0;for (int i = 0; i < 10; i++) { c = i; System.out.println(c);}
写法2:
for (int i = 0; i < 10; i++) { final int c = i; System.out.println(c);}
依据 final
的定义,写法1报错!写法2,为什么通过编译呢?因为每次循环,都是一次新的变量c。这也是大家须要留神的中央。
3.2.4 润饰变量-成员变量
成员变量波及到初始化的问题,初始化形式有显示初始化和构造方法初始化,只能抉择其中一个:
- 显示初始化(在定义成员变量的时候立马赋值)(罕用);
public class Student { final int num = 10;}
构造方法初始化(在构造方法中赋值一次)(不罕用,理解即可)。
留神:每个构造方法中都要赋值一次!
public class Student { final int num = 10; final int num2; public Student() { this.num2 = 20;// this.num2 = 20; } public Student(String name) { this.num2 = 20;// this.num2 = 20; }}
被final润饰的常量名称,个别都有书写标准,所有字母都大写。