Java学习笔记:04面向对象-内部类_访问修饰符_final
04面向对象-内部类/访问修饰符/final
1.static的介绍
static:关键字,静态的
static的作用是用来修饰类中的成员
2.访问一个类中的某一个成员变量
方法一:
_1.创建对象
_2.通过对象调用成员变量
3.如果一个类的成员变量static修饰,那么想访问这个成员
直接通过类名.成员变量名
什么时候的成员变量需要static修饰?
_如果这个成员不属于某一个对象,而是属于所有对象共有的,那么需要加上static修饰
static修饰的成员变量/成员方法的使用
1.建议直接用类名调用
_类名.静态成员变量
_类名.静态成员方法(参数)
_也可以通过对象,不建议
非静态成员变量/成员方法需要创建对象来调用
final
final:最终的,中技的 黑客–>(红客,骇客) 黑鹰基地
final可以修饰: _类,成员变量,局部变量(基本类型,引用类型),成员方法
1.final修饰类(太监类):不能被继承,但是可以被做为其他的类的子类
2.final修饰成员变量:
2.1被final修饰的成员变量,必须在创建对象之前有确定的值
2.2被final修饰的成员变量,只能赋值一次
3.final修饰成员方法(最终的方法):
不能被子类重写
4.final修饰基本类型局部变量:
被final修饰的基本类型局部变量,只能被赋值一次
5.final修饰引用类型的局部变量:
被final修饰的引用类型局部变量只能赋值一次
但是引用类型所指向的对象中内容是可以改变
1.包本质是什么?
包的本质就是文件夹,在包名中是以.来区分上下级文件夹关系
2.为什么要用包?
分类管理文件
3.包的声明:
格式:package 包名
作用:只是 某个类 在哪个包下
包的声明必须与类实际位置保持一致
4.包的导入
用来告诉编译器,我们要使用的类在哪一个包下
5.全限定类型
格式:包名.类名
比如package Exercise.PackageDemo;
java中有四个权限修饰符
public:(公共)
protected:(受保护的)
default:(默认,不写就是default)
private:(私有的)
public protected 不写(default) private
如果一个成员只想在本类中使用 用private修饰***
如果一个成员只想在本类中和本包的其他类中使用 不写修饰
如果一个成员只想在本类中使用和本包中使用或者其他包的子类中使用 用protected修饰
如果一个成员想在所有类中都可以使用 用public修饰****
内部类:
根据内部类定义位置不同的分类:
a.成员内部类:定义类中方法外
在其他类中如何创建该类的对象
固定格式:
外部类名.内部类名 变量名 = new 外部类().new 内部类();
b.局部内部类:定义方法中
在其他类中,是无法使用
只能局部位置使用
匿名内部类:
是一种特殊语法,用来快速创建抽象类的子类对象
也可以快速创建接口的实现对象
a.作用:
快速创建 抽象类的子类对象,接口的实现类对象.
b.格式:
第一种:
new 抽象类(){
//重写抽象类中所有的方法
};
第二种
new 抽象类(){
//重写抽象类中所有的方法
}.重写后的方法();
第三种
接口类型 变量名 = new 接口(){
//重写接口中所有的方法
};
不用匿名内部类:
问题1:给你一个抽象类,要求创建该类的子类对象
分三步:1.创建子类,继承抽象方法
2.创协抽象类中的所有抽象方法
3.new 子类
类作为方法的参数或返回值
我们需要传递的或者返回的,应该该类的对象(不是该类,也不是别的类的对象)
静态代码块
代码块,在成员位置 使用大括号括起来的一堆代码
public class Person{
//静态代码块
static{
代码块
}
public void show(){ }
}
特点:
1.当我们使用到一个类时,那么这类中的静态代码块自动执行
2.只会执行一次,第一次使用该类,就立刻执行
3.在同一个类中,静态代码块的优先级很高,比构造方法优先,比main方法优先
4.作用:
用来初始化类中某些功能(mysql的数据库驱动的加载)
Java学习笔记:04面向对象-内部类_访问修饰符_final的更多相关文章
- Java学习笔记:03面向对象-接口_多态
1.类的概念 一堆具有共同的成员变量(属性)和成员方法(功能)对象的集合 2.接口的概念 接口是功能的集合,就是方法的集合 接口中只能定义方法,不能定义普通的成员变量 而且接口中的成员方法,必须是抽象 ...
- Java学习笔记(4)----Public,Protected,Package,Private修饰符可见性
Java修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的任何类均可以访问:protected的类.类属变量及方法,包内的 ...
- java学习笔记12(final ,static修饰符)
final: 意思是最终的,是一个修饰符,有时候一个功能类被开发好了,不想被子类重写就用final定义, 用final修饰的最终数据成员:如果一个类的数据成员用final修饰符修饰,则这个数据成员就被 ...
- Java学习笔记之---面向对象
Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...
- Java学习笔记 04 类和对象
一.类和对象的概念 类 >>具有相同属性和行为的一类实体 对象 >>实物存在的实体.通常会将对象划分为两个部分,即静态部分和动态部分.静态部分指的是不能动的部分,被称为属性,任 ...
- Java学习笔记之面向对象
面向对象概念 面向对象编程 &面向过程编程 面向对象:关心是谁来做 面向过程:关心的是怎么做 面向对象总结成一句话:就是分工与协作,干活的是对象 生活中: 对象 -----抽象-------- ...
- 【原】Java学习笔记017 - 面向对象
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 继承关系中的pri ...
- 面向对象_访问修饰符_构造与析构函数_this指针
1:面向对象 以codeblocks举例,在一个工程里面: File-->new -->Class可以建一个类,可以设置类的参数,是否有set get方法,有无构造函数等设置,.h文件主要 ...
- Java面向对象入门(2)-访问修饰符
Java访问修饰符–public, protected, private and default Java提供了四个访问修饰符来设置类,变量,方法和构造函数的访问级别,即public,private, ...
随机推荐
- 入门-k8s集群环境搭建(二)
对于 Kubernetes 初学者,在搭建K8S集群时,推荐在阿里云或腾讯云采购如下配置:(您也可以使用自己的虚拟机.私有云等您最容易获得的 Linux 环境) 至少2台 2核4G 的服务器 Cent ...
- getter-setter方法练习
// // Kline.h #import <Foundation/Foundation.h> @interface Kline : NSObject { int _max; // 最高价 ...
- Python将py文件编译为exe的方法
使用PyCharm工具写好的Python程序脚本,怎么将.py文件编译为可执行的.exe文件 前提是已经安装了Python环境. 第一步:在PyCharm内下载安装pyinstalle库或使用CMD安 ...
- Ubuntu18修改系统时间
1. 运行 tzselect 依次选择 Asia -> China -> Beijing Time 2. 复制文件到 /etc 下 sudo cp /usr/share/zoneinfo/ ...
- 员工管理系统+字符编码+Python代码文件操作
员工管理系统+字符编码+Python代码文件操作 1.员工管理系统 1.1 debug 代码调试 1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)2.之后右键点击debug运行代码 ...
- Solution -「AGC 034C」Tests
\(\mathcal{Description}\) Link. 给定非负整数序列 \(\{l_n\},\{r_n\},\{b_n\},X\),求最小的 \(s\),使得存在非负整数序列 \(\ ...
- Solution -「CF 1372E」Omkar and Last Floor
\(\mathcal{Description}\) Link. 给定一个 \(n \times m\) 的矩阵,每行被划分为若干段,你可以钦定每段中恰好一个位置为 \(1\),其余位置为 \( ...
- fork_join
在systemverilog中可以用fork-- join.fork --join_any.fork--join_none来实现多个线程的并发执行. 1.父线程.子线程 调用fork--join的线程 ...
- CoRR 2015 | MXNet: A Flexible and Efficient Machine Learning Library for Heterogeneous Distributed Systems
MXNet是一个支持多种编程语言的机器学习库,使用MXNet可以方便地实现机器学习算法,尤其是深度神经网络.通过嵌入在宿主语言中,它将声明式符号表达与命令式张量计算相结合.它提供自动求导以计算梯度.M ...
- 如何在TypeScript/JavaScript项目里引入MD5校验和
摘要:MD5校验和则是其中一种数学算法,通常是使用工具对文件计算得出的一组32 个字符的十六进制字母和数字. 本文分享自华为云社区<TypeScript/JavaScript项目里如何做MD5校 ...