IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 《嗨 Java》第四章:包和继承 -> 正文阅读

[Java知识库]《嗨 Java》第四章:包和继承

什么是包?

包是一种组织类的一种形式,最主要的是防止类名冲突,所以一个类会定义到一个包里当想用这个包里的类的时候就要先导包来引导编译器找到这个类。

Java中的包类似C++里面的#include但是有一点区别,Java导包不能导入具体的包,只能导入具体包里面的具体的类。

如果使用“通配符”来导入一个包里面的所有内容,那么Java不会全部导入进来,而是在程序运行的时候需要那个包的类就会自动去找,而不是全部正进来这样大大提高了空间利用率。

如果是C++那么包一个头文件会把所有方法都拷贝进主方法,不管你会不会用得到。

导入包中的类

Java中导入包的语法:import java.包名.类名

例子:

import java.util.Date

package和import的区别

package 类似C++里面的命名空间域给源文件标记一个名字,这样就可以防止名字冲突。

import类似C++里面的包含头文件,用来告诉编译器哪里可以找到这个类。

静态导入

使用import static可以导入包中的静态方法和字段,不过这种导入方式用的场景非常少,我们了解即可。

例子:

import static java.lan.Math.*;

public class Test {
    public void main(String[] args) {
        //静态导入包,可以神略类名来调用方法
        double ret = sqrt(8);
    }
}

将类放到包中

基本规则

  1. 在文件的第一行加package关键字来指定该代码在那个包中。
  2. 包名需要尽量指定成唯一的名字,通常会用公司的域名颠倒形式(com.ls.demo)
  3. 包名和代码的路径要匹配(如:创建com.ls.demo的包,那么会存在一个对应的路径com/ls/demo来存储代码。
  4. 如果一个类中没有package来指定是那个包中的类,那么该类会放到默认包中。

具体操作步骤

创建包:

image-20220602162036287

创建包名:

image-20220602162136718

回车表示输入完成,当回车之后会生成一个包。

image-20220602162228395

接着我们在新建的包里面创建一个类。

image-20220602162348188

此时编译器就会在磁盘上创建一个路径,我们跟着路径走到低回发现有一个刚刚我们创建的类。

image-20220602162559260

同时我们用idea打开这个类会发现idea会自动帮我们加上package指定包。

image-20220602162728589

包的访问控制权限

publicprivate也能对包进行作用,如:包中的一个成员有priavte权限只能在类里面使用,如果是public则可以在包外也能调用,如果什么都不加那么默认只能在包里面使用该成员。

常见的系统包

  1. java.lang(系统常用基础类,此包从JDK1.1之后就会自动导入)
  2. java.lang.reflect(Java反射包)
  3. java.net(进行网络编程开发包)
  4. java.sql(数据库开发的支持包)
  5. java.util(java提供的工具程序包,(集合类等等)很重要)
  6. java.io(I/O编程开发包)

继承

继承本质是为了提高代码的复用性,减少冗余代码来达到高效开发的目的。

继承除了private修饰的成员,其它成员都会被子类继承。

举个例子: 动物,动物有很多种而动物都有一个特性有性别、年龄和行为等等……如果我们一个动物定义一个类的会,那么里面会有很多重复出现的成员,这时我们可以不可以用一个类概括所有动物而且这个类都有所有动物都会有的成员,于是就有了这样的设计先创建一个动物类,再用一个具体的动物类来继承这个动物这样提高了代码的复用性同时也减少了代码量。

继承语法

继承语法: class 子类 extends 父类 {}

  • Java中不存在多继承只有单继承。
  • 使用extends来指定继承的父类
  • 子类可以使用父类里面的所有public的字段和方法。
  • 父类中的private修饰的字段和方法,对于继承的子类是不可见的(当然也可以理解成没有继承下来也对)。
  • 子类的实列中也包含了父类的实列,可以使用super关键字得到父类实列的引用。

this和super的区别

this的作用是在类里面是该类的一个实列引用,谁是实列,那么this就是那个实例的引用。

super的作用是显示调用父类的方法或成员,有时候子类和父类有一个相同名字的方法或成员变量,编译器调用自己当前类的,想调用父类的就用supear显示调用。

protected关键字

有时候我们对成员的权限控制的时候有一个需求,我们想让子类能调用该方法同时不然类外的对象调用,这个时候我们用publicprivate都无法满足。

这时protected就诞生了,protected主要是用来解决继承中的问题,它可以被子类访问但不能被类外的对象访问。

  • 对于类的调用者来说protected修饰的字段和方法是不能访问的。
  • 对于类的子类和同一个包的其它类来说,protected修饰的字段和方法是可以访问的。

总结:Java中对于字段和方法共有四种访问权限

  • private:类内部能访问,类外部不能访问。
  • 默认(包访问劝降):类内部能访问,同一个中的类也能访问,其它类不能访问。
  • protected:类内部能访问,子类和同一个包中的类也可以访问,其它类不能访问。
  • public:类内部和类的调用者都能访问。

final关键字

final不仅可以修饰一个变量或字段,还能修饰类。(修饰字段或变量的时候表示该变量是常量)

当也给类被final修饰的时候是无法继承的。

例子:

final class A {//表示无法被继承
    
}

class B extends A {//如果强行继承编译器会报错
    
}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-06-06 17:11:36  更:2022-06-06 17:11:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:27:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码