第一章 包

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 不同权限的拜访能力

publicprotected默认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 Stringpublic final class Mathpublic 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 润饰变量-局部变量

  1. 局部变量——根本类型
    根本类型的局部变量,被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润饰的常量名称,个别都有书写标准,所有字母都大写