java 类、方法、代码块修饰式关键字总结

  1. super 关键字

    1. this和super的区别
    2. 访问成员的区别
  2. this关键字
    1. this特点
    2. this使用场景
  3. static关键字
    1. 例子
  4. 访问权限修饰符
    1. 特点
    2. 总结:
      1. 四个修饰符的特点
      2. 访问权限修饰符的宽严关系
  5. final关键字
    1. 用法

      1. 自定义常量
      2. final修饰类
      3. final修饰成员变量
      4. final修饰局部变量
      5. final修饰成员方法

super 关键字

this和super的区别

this代表当前对象,super可以理解为父类对象
既然super理解为一个父类对象,那么super应该可以用访问父类的成员

this的主要作用来帮助初始化本类成员(当外界传入的变量名和本类变量名相同的时候)

super的主要作用帮助我们初始化父类继承过来的成员

任何一个本类成员都默认隐含了一个this
任何一个本类的成员同时也可以使用super访问父类的成员

访问成员的区别

成员变量
            this.成员变量
            super.成员变量
            super 不能访问父类私有成员

成员方法
            this.成员方法
            super.成员方法

构造方法
            this(参数列表)
            super(参数列表)
            任何一个构造方法都默认会在构造方法第一句写上super,访问父类的无参构造方法
            Constructor call must be the first statement in a constructor
            super和this访问构造方法必须出现在构造方法的第一句
            this和super在访问构造方法的时候,二者不能共存

static静态的上下文中不能出现this和super

this关键字

this:代表当前类的对象引用,在内存中,他和普通引用一样也指向堆区的空间,在创建对象的时候,也创建一个this引用指向同一个堆区的空间。

this特点

每个类的每个非静态方法 ==(没有被static修饰) #00BCD4== 都会隐含一个this引用名称,它指向调用这个方法的对象。
当在方法中使用本类的属性时,都会隐含地使用this名称,当然也可以明确指定。
this可以看作是一个变量,它的值就是当前对象的

this使用场景

当局部变量和成员变量同名时使用this关键字
this关键字可以访问本类构造函数

static关键字

static修饰的变量叫做静态变量/ 共享变量 / 类变量

## 例子
通过静态修饰方法最大的好处? -- 方便调用 例如Math类
开发中经常会看到类似于Math类这样的工具类
以后我们也会编写自己的工具类,以后工具类的包名一般叫做 com.sxt.utils DBUtils NetUtils DBTools

访问权限修饰符

public protected default private
同一类中
同一包中的子类或其他类
不同包中的子类
不同包中的其他类

特点

1.静态变量属于某个类,而不属于某个具体的对象
2.只有静态才能访问静态,非静态变量不能够出现静态方法中
3.访问静态成员的格式
类名.成员变量
类名.成员方法
4.静态环境下不能够出现this和super关键字
5.static不仅能够修饰成员变量,成员方法,还能够修饰类,修饰类的时候必须内部类(后面讲解)
6.static还可以修饰代码块
7.静态代码块一般都是用来初始化静态成员
8.静态方法无法被重写,所以static关键字不能和abstract抽象方法一起使用(抽象方法必须重写)。

总结:

1.访问权限修饰符有四个
2.访问权限修饰符可以修饰成员变量,成员方法,还可以修饰类(只有public可以)
在这里需要注意,==其实protected/private也可以修饰类,但是必须是内部类 #03A9F4==

四个修饰符的特点

1.public修饰的成员对一切类可见
2.protected修饰的成员对子类可见
3.default修饰的成员仅对同包下可见
4.private修饰的成员仅对本类可见

访问权限修饰符的宽严关系

public > protected > default > private

Java当中封装就是通过访问权限修饰符来实现的
封装: 就是屏蔽内部的成员,而屏蔽内部的成员是通过访问权限修饰符来控制的

final关键字

final表示最终的,不可以改变的
在java里面修饰词 final修饰过的变量的值是不可以被修改的。在外部声明的变量在这个类一杯调用就初始化了,如果你没有对final修饰过的变量赋值,编译器初始化这个类的时候发现一个不可被修改的变量没有值,编译器必然报错。但是在方法内如果没有调用这个方法,就不会初始化这个变量,编译器就不会报错,在方法里可以先声明后赋值
## 用法

### 自定义常量
final修饰的变量表示常量
public static final int GAME_START = 0; public static final int GAME_END = 1; public static final int GAME_RUNNING = 2;
自定义常量提高了程序的可读性
常量不能够被二次赋值

final修饰类

final修饰类不能够被子类继承

final修饰成员变量

因为成员变量默认值是0,不能够被二次赋值
因为常量是在常量池中,不在堆区,所以没有默认值

### final修饰局部变量
局部变量没有给默认值,所以不能被二次赋值

final修饰成员方法

成员方法不能够被子类重写

原文地址:https://www.cnblogs.com/lqhhome/p/10769640.html

时间: 2024-10-06 10:04:14

java 类、方法、代码块修饰式关键字总结的相关文章

java提高篇-----代码块

自己添加部分 构造代码块在变量初始化之后执行:也符合java编程思想中  ---- 静态构造代码块>变量初始化>普通构造代码块 在编程过程中我们可能会遇到如下这种形式的程序: public class Test { { //// } } 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法.一般来说代码块是不能单独运行的,它必须要有运行主体.在Java中代码块主要分为四种: 一. 普通代码块 普通代码块是我们用得最多

java中静态代码块的用法 static用法详解

(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的.静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就是

uiview 删除某个指定view类的代码块

- (void)removeDynamictItemView:(UIView *)view { NSMutableArray *itemesToRemove = [NSMutableArray array]; for (UIView *subview in view.subviews) { if ([subview isKindOfClass:[TBCouponDynamictItemView class]]) { [itemesToRemove addObject:subview]; }els

Java中动态代码块,构造代码块,静态代码块之间的执行顺序

Java中动态代码块,构造代码块,静态代码块之间的执行顺序 /** * Java中动态代码块,构造代码块,静态代码块之间的执行顺序 * @author Administrator * */ class HelloA { public HelloA() { System.out.println("HelloA"); } { System.out.println("I'm A class"); } static { System.out.println("st

一张图讲解对象锁和关键字synchronized修饰方法(代码块)

每个对象在出生的时候就有一把钥匙(监视器Monitor),那么被synchronized 修饰的方法相当于给方法加了一个锁,这个方法就可以进行同步,在多线程的时候,不会出现线程安全问题. 注:Monitor是 Java中用以实现线程之间的互斥与协作的主要手段,它可以看成是对象或者 Class的锁.每一个对象都有,也仅有一个 Monitor. 下面通过一张图片进行讲解:1.一张图片图片看不清,请点击这里 : 高清大图这里写图片描述2.图片对应的代码/*** 测试的object类**/}}}}}}1

java中静态代码块(static{...}),局部代码块(方法中{...}),构造代码块(类中{...})区别。

1.局部代码块: 格式:在方法中{局部代码块执行语句} 局部代码块,又叫普通代码块.它是作用在方法中的代码块. 作用:是控制变量的生命周期. 在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中,不想再用到它时,那么就没必要让x在内存中继续占用空间.因此就有了局部代码块. 2.构造代码块: 格式:在类中{构造代码块执行语句} 作用:就是给所有对象进行初始化. 注意几点: 1)每次创建对象他都会执行. 2)构造代码快是优于构造函数执行. 3)构造代码块与构造函数的区别是:构造代码块是给所

Java误区: 静态代码块,当把类将被载入到自己主动运行?

JAVA静态代码块会在类被载入时自己主动运行? 非常多Java开发人员的思想,被这个思想深深的轮奸了n遍,传播这个错误思想的博客,在网上一堆,越来越多的人被轮奸. 如:http://blog.csdn.net/leeyu35/article/details/7755304 那么我们程序来证明这句话是错误的: class MyClass1 { static {//静态块 System.out.println("static block "); } } public class Main

Java误区: 静态代码块,会在类被加载时自动执行?

JAVA静态代码块会在类被加载时自动执行? 很多Java开发者的思想,被这个思想深深的轮奸了n遍,传播这个错误思想的博客,在网上一堆,越来越多的人被轮奸. 如:http://blog.csdn.net/leeyu35/article/details/7755304 那么我们程序来证明这句话是错误的: class MyClass1 { static {//静态块 System.out.println("static block "); } } public class Main { Cl

java面试基础题------》Java 中的父子类静态代码块,代码块,构造方法执行顺序

4.指出下面程序的运行结果. class A { static { System.out.print("1"); } public A() { System.out.print("2"); } } class B extends A{ static { System.out.print("a"); } public B() { System.out.print("b"); } } public class Hello { pu