关键字——this,super,static,final
this
- 理解为当前对象。
//测试
public static void main(String[] args){
Person person = new Person(3, "xiaoMing");
}
//创建一个类:
class Person{
int age;
String name;
public Person(int age,String name){
this.age = age; //this:当前对象,在这里是指person这个对象。
this.name = name;
}
}
- 可以调用构造器
①调用本类的其他构造器
②不能调自己
③构造器中使用this,则必须放在构造器的 首行
class Person{
int age;
String name;
public Person(int age){ //①
this.age = age;
}
public Person(int age, String name){
this(age); //调用① 构造器
this.name = name;
}
}
//测试:
public static void main(String[] args){
Person person = new Person(3, "xiaoMing");
}
super
- ① 若子类的属性(方法等)和父类的重名,可以用super.属性(方法等)调用父类的属性(方法等)【重写是个范例】
- ② super调用父类构造器;
在子类构造器中声明super,则必须声明在首行,this和super不能同时出现
在构造器首行,没有显式出现super,默认是super()构造器
static
- 不能修饰构造器
- static修饰的变量,叫静态变量,没有用static修饰的变量叫 实例变量,静态变量内存种独一份,被所有对象共享,当且仅当类被初次加载时会被初始化,而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
- 静态变量在内存中存在一份,在方法区中的静态域中。
- static修饰方法,叫静态方法,静态方法中只能声明静态属性,方法。
非静态方法即可调用静态方法也可调用非静态方法 - 在static方法中,不能使用this和super关键字
final
- final修饰的属性可以被赋值的地方有:显式初始化,代码块中初始化,构造器中初始化
class Person{
int age ;
String name;
final int C = 3; //显式初始化
final int B ;
final int A ;
{
B = 3; //代码块中赋值
}
public Person(){
A = 3; //构造器中赋值
}
public Person(int n){
A = n; //若用构造器赋值,则每写一个构造器都要赋值一次,
//因为有的构造器不一定用
}
}
- 修饰类:此类不能被继承,'断子绝孙',不能说明该类中的属性和方法是final的
- 修饰方法:此方法不能被重写,但是仍然可以继承
- 修饰属性:
①若该属性是基本数据类型,则不能被修改
②若该属性是引用数据类型,如数组,对象,则该对象,数组的值可以被修改,
但是引用不能修改。
//1.
class Dog1{
String name;
//编译错误,age必须赋值
final int age = 3;
}
//测试
final Dog1 dog = new Dog1();
System.out.println(dog);
dog.name = "dd";
System.out.println(dog.name); //输出dd
dog.name = "cc";
System.out.println(dog.name); //输出cc,里面的值可以改
dog = new Dog1(); //编译错误,引用不能修改
//2.
final int[] arr = {11,33,44};
arr[2] = 2; //可以修改
System.out.println(arr[2]); //输出2
arr = new int[]{1}; //error,编译错误,引用不能修改
- final还可以修饰局部变量:作用就是让局部变量不能再修改了
class Person{
public void show(final int a){
a = 3; //error,表示a只能使用不能修改
}
public void show2(int a){
final int b = 3; //表示b不能修改了
b = 4; //error
}
}
static final 修饰属性:表示全局常量
关键字——this,super,static,final的更多相关文章
- this/super/static/final/匿名对象/继承/抽象类/访问权限修饰符
1.this关键字的作用 1)调用本类中的属性; 2)调用本类中的构造方法;且只能放首行,且必须留一个构造方法作为出口,即不能递归调用 3)表示当前对象; 2.匿名对象 ...
- java面试官:兄弟简单谈谈Static、final、Static final各种用法吧
前言 对Static.final.Static final这几个关键词熟悉又陌生?想说却又不知怎么准确说出口?好的,本篇博客文章将简短概要出他们之间的各自的使用,希望各位要是被你的面试官问到了,也能从 ...
- java中的Static、final、Static final各种用法详解
前言 对Static.final.Static final这几个关键词熟悉又陌生?想说却又不知怎么准确说出口?好的,本篇博客文章将简短概要出他们之间的各自的使用,希望各位要是被你的面试官问到了,也能从 ...
- -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal
java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型 也就是 ...
- java基础9 main函数、this、static、super、final、instanceof 关键字
一.main函数详解 1.public:公共的.权限是最大的,在任何情况都可以访问 原因:为了保证jvm在任何情况下都可以访问到main法2.static:静态,静态可以让jvm调用更方便,不需要用 ...
- Java 构造方法及关键字:this、super、final、static
一.构造方法 1.概念 在创建对象时,需要明确对象的属性值,即当使用new关键字创建对象时,同时给对象的属性初始化值. 这就需要用到构造方法.构造方法的格式: 修饰符 构造方法名(参数列表){ } 构 ...
- 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...
- Java中static、this、super、final的用法
一. static 请先看下面这段程序: public class Hello{public static void main(String[] args){//(1)System. ...
- java中static、this、super、final用途、用法及实例
一.static 请先看下面这段程序: public class Hello { public static void main(String[] args){ //(1) System.out.pr ...
随机推荐
- clickhouse智能提示编辑器
对于经常写sql的人来说智能提示是非常重要的,这个非常影响写sql的效率和心情. 这里说的智能提示不仅仅是关键字(select等)的智能提示,还得要做到表字段的智能提示. 例如: 下面是mysql的智 ...
- NodeJS学习日报day4——模块化
// console.log(module); // 执行顺序不同,结果也不同 // module.exports = { // name : 'Cra2iTeT', // hi() { // con ...
- Android第五六周作业
1.返回键实现对话框弹出是否退出应用程序 package com.example.zuoye1; import androidx.appcompat.app.AlertDialog; import a ...
- java中int的最值解析
java中int的最大值为十进制的2147483647,也就是java能进行操作的最大数值,超出就会显示不正常.针对以下问题进行讨论. 1.最大值为什么是2147483647? java中int类型占 ...
- 代码管理工具-Git基础介绍及常用技巧
目录 Git起源 基本概念 Branch.HEAD和Commit tree Git分支 git merge 和 git rebase 的区别和抉择 与远程仓库的交互 关于一些实际开发场景的问题和解决方 ...
- C# 一维数组如何快速实现数组元素的数据类型的转换?
一.场景假设 假设有一串字符串如下所示,字符串中的数字之间已用英文状态下的逗号隔开.要求用此字符串中的数字快速生成int类型的数组,且尽可能使用最少的代码量. string str = "1 ...
- 这些 Shell 分析服务器日志命令集锦,收藏好
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 自己的小网站跑在阿里云的ECS上面,偶尔也去分析分析自己网站服务器日志,看看网站的访问量.看看 ...
- 老生常谈系列之Aop--Spring Aop源码解析(二)
老生常谈系列之Aop--Spring Aop源码解析(二) 前言 上一篇文章老生常谈系列之Aop--Spring Aop源码解析(一)已经介绍完Spring Aop获取advice切面增强方法的逻辑, ...
- 网页数字递增——jquery.countTo.js
html <div class="timer" data-to="633"></div> <div class="tim ...
- 【拖拽可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
"整篇文章较长,干货很多!建议收藏后,分章节阅读." 一.设计方案 整体设计方案思维导图: 整篇文章,也将按照这个结构来讲解. 若有重点关注部分,可点击章节目录直接跳转! 二.项目 ...