(三).类的小知识点
3.类
1)Java在使用到类时才加载类到程序中。如果在加载类时,希望先进行一些类的初始化动作,可以使用static定义一个静态区块,并在当中编写类载入时的初始化动作。
例如:
public class SomeClass
{static {
System.out.println("The class is loaded!");}}public class StaticBlockDemo{
public static void main(String[] args){SomeClass someClass = new SomeClass();}
}
在使用new来建立SomeClass的实例时,SomeClass类会被加载,加载之后预设会执行静态区块的内容,所以程序的执行结果如下所示:
The class is loaded!"
被执行时,首先执行static中的程序,并且只会执行一次。
2).类的创建
1).类的声明
[修饰符] class <类名> [extends 父类名] [implements 接口列表]{}
2).成员变量的声明
[修饰符] [static] [final] [transient] [volatile] <变量类型> <变量名>;
final:指定为常量
transient:指定为暂时性变量,用于对象存盘 //????
volatile:指定为共享变量,用于并发线程的共享 //????
3).类的对象的销毁
主要两种情况对象会被Java虚拟机收回:
(1).超出对象的引用作用域
(2).将对象置为null
4).super关键字
两种作用:
1.调用父类的构造函数
super(参数列表)
必须是构造方法采用的第一个动作
2.操作被隐藏的成员变量和方法(不能访问父类中private权限的成员变量和方法)
super.成员变量
super.方法
5).抽象类
abstract class 类名{}
抽象方法不能使用private或static关键字修饰
包含一个或多个抽象方法发的类必须被声明为抽象类
6).final类和final方法
无法继承,无法改动类和重写方法
7).一个类可以访问该类的所有对象的私有成员。
8).null常量
null是一个特殊常量,可以用来给任何类类型的任何变量赋一个之值。null常量不是对象,而是对象引用的一种占位符,不能用一个被初始化为null的变量调用方法。因为他就像一个引用(内存地址),所以在测试一个类类型的变量是否能够包含null是,使用==和!=,不用equals方法。
9).改变被覆盖的方法的返回类型
在一般情况下,覆盖一个方法定义时,不可以改变该方法的返回类型,但如果返回类型是类类型的话,则可以把返回类型改为该类的任何子类。这种改变返回后得到的类型成为协变返回类型。
10).this的构造方法
在一个类的构造函数中,可以用this作为同一个类中的另一个构造方法的名称。对this的任何调用,必须是该构造方法采取的第一个动作。
例如:
public Hour(int huor)
{
this(6,3);
this.huor=hour;
}
11). 派生类中的throw子句
在派生类中覆盖一个方法定义时,应在throws子句中列出该方法在基类中具有的相同的异常类,不能在派生类的throws子句中增加任何异常类(但可以根据需要删除某些基类的异常类,还可以将基类中的异常类替换为任何其派生类),这么做是因为一个派生类对象可以在基类对象可以使用的任何地方使用,也就是说派生类拥有基类的类型属性。
4.包
1).包有主要三种功能:
1.一般是功能相近的类的集合
2.避免命名冲突(不同的包中可以存在相同类名的类)
3.在java中,访问权限是以包为单位的
2).创建包
package 包名;
例子:将类放入包中
package com.wgh;
public class CIJ{ };
3).使用包中的类
类可以访问其所在保重的所有类,和其他包中的所有public类。
1.使用长名引用包中的类
例子: com.wgh.Clj hh=new
com.wgh.Clj();
2.使用import
import 包名1.包名2.包名n.类名|*;
*表示所有类
这里应注意:
若有一个a.b和一个a.b.c包,可知第二个包为第一个的子文件。使得一些程序员认为如下声明会同时导入两个包:
import a.b*;
这是不对的。导入整个包时,不会导入子目录中的包。
正确的说明语句应该加上:
import a.b.c*;
5.编译时的异常和运行时的异常的区别
(三).类的小知识点相关推荐
- 【100个 Unity小知识点】 | 启动unity应用时的 Unity Logo 删除/替换的三种方案
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...
- JavaScript 小知识点
原型链相关 最详尽的 JS 原型与原型链终极详解 isNaN() 和 Number.isNaN() 的区别 isNaN() 是 ES1 规范: 是全局方法: 如果参数不是一个 Number 类型,会先 ...
- Python之路番外(第二篇):PYTHON基本数据类型和小知识点
一.基础小知识点 1.如果一行代码过长,可以用续行符 \ 换行书写 例子 if (signal == "red") and \ (car == "moving" ...
- c++的一些小知识点
自己总结的一些小知识点,希望能够对大家有帮助. bool:1 char:1 wchar_t:2 char16_t:2 char32_t:4 short:2 int:4 long:4 long long ...
- LeetCode刷题遇到的小知识点总结
文章目录 1. 需要判断输入的两个参数的大小/长度 2. 数学分式的化简 3. 二叉树操作的小总结 4. MySQL分组内取前几名的问题 5. SQL中的小问题 6. 对哈希表的初步理解 (1)初步理 ...
- python 引入同一路径的类_python小课堂15 - 史上最详细的包和模块import讲解篇
python小课堂15 - 史上最详细的包和模块import讲解篇 前言 在大量的代码设计中,我们不可能将所有代码都写在一个.py文件,所以有了包.模块,而为了代码可以重复利用(复用性),就有了类.函 ...
- 0607am抽象类接口析构方法tostring小知识点
/* class ren { public static $color;//静态 static function () { ren::$color; self::$color;//self只能写在类里 ...
- Python小知识点(5)--面向对象部分
Python小知识点(5)--面向对象部分 面向对象: 世间万物,皆可分类.--------------------手机<--------------某一个分类 世间万物,皆为对象.------ ...
- JS,JQ,PHP的小知识点整理
在日常开发中所使用的JS,JQ,PHP的小知识点整理 持续更新-- 1.js和jq获取当前的时间戳 方法一: <script>var timestamp = Date.parse(new ...
最新文章
- Joomla和Drupal简介
- Java数组合并,完成排序,从时间复杂度,和空间复杂度考虑
- 新兴的短距离传输技术-zigbee技术
- C++ 11 新特性 nullptr 学习
- ThinkPHP框架学习(二)
- python给函数设置超时时间_在 Linux/Mac 下为Python函数添加超时时间
- 3.spring cloud + zookeeper注册中心 + Feign调用案例
- 我们为何需要单点登录系统
- Spring cloud Gateway(二) 一个Http请求的流程解析
- 原来喔趣是吾以前的同事开发的
- 学生静态网页设计作品之我的家乡
- 科目二考试技巧全总结
- win10上安装ubunt18双系统过程中出现mmx64.efi not found问题
- html5绘制好看的时钟,利用纯html5绘制出来的一款非常漂亮的时钟
- 单片机怎么通过按键控制计时器的开始和停止_超详细!51单片机寄存器功能一览表...
- c语言怎样统计数组的长度,C语言指针难吗?纸老虎而已,纯干货讲解
- Android Camera 架构
- vue 深度监听watch(如何watch监听一个对象内部的变化)
- 某生鲜电商mfsig加密算法分析
- js中一个对象当做参数传递时候?