java中的关键字之修饰符关键字

  • 关键字
    • 修饰符型关键字
    • static关键字
      • static变量和static方法
      • static关键字的问题
        • 能通过this访问静态成员变量吗?
    • final关键字
      • final关键字的几种用法
        • 1、修饰变量
        • 2、修饰方法中的参数
        • 3、修饰方法
        • 4、修饰类
    • abstract关键字

关键字

修饰符型关键字

public修饰符:任何类都可以访问
protected修饰符:类及其子类或同一个包下的类可 以访问

default(默认不写):类及当前包下可以访问

private修饰符:访问权限仅限于类内部

static关键字

static变量和static方法

static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。但是在非静态成员方法中可以访问静态成员方法或者变量。

package Test;public class Test {public static void main(String[] args) {Test2 xm=new Test2(19,"男", "小明");//对Test2类进行实例化//name变量为静态变量,所以直接类名.变量名就可以访问,但是age、sex是非静态,需要进行实例化,通过对象名.变量名进行访问System.out.println(Test2.name+"的年龄为 : "+xm.age);System.out.println(Test2.name+"的性别为 : "+xm.sex);//play方法为静态方法,直接类名.方法名就可以调用,但是run方法是非静态方法,所以也需要实例化,通过对象名.方法名进行调用Test2.play();xm.run();}}
class Test2{//name变量为静态,age、sex变量为非静态变量static String name;int age;String sex;public Test2(int age, String sex,String name) {this.age = age;this.sex = sex;this.name=name;}//非静态方法runvoid run() {System.out.println("跑步。。。。");}//静态方法playstatic void play() {System.out.println("打篮球。。。");}}

运行结果为

小明的年龄为 : 19
小明的性别为 : 男
打篮球。。。
跑。。。。

static关键字的问题

能通过this访问静态成员变量吗?

看如下的例子:

package Test;public class Test3 {static String name="小红";//静态变量public static void main(String[] args) {new Test3().Xin();//调用Xin方法}void Xin() {String name="小明";//非静态变量,局部变量System.out.println("名字为:"+this.name);}
}

运行结果为:

名字为:小红

通过例子可以看出,this.name 调用的变量是类的成员变量,所以说,this.变量名 是用来调用类的成员变量的方法,所以静态和非静态都可以通过this.来调用,如果是方法中定义的局部变量,则不能用this.变量名 来调用。

final关键字

final关键字是Java中的关键字,其意思为最终的,不可以在进行修改,可以修饰变量,类,方法

final关键字的几种用法

1、修饰变量

用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。final 修饰的变量

可以先声明,后赋值。但是只能定义一次final变量。

当用final作用于类的成员变量时,成员变量(局部变量只 需要 保证在使用之前被初始化赋值即可)必须在

定义时或者构造器中进行初始化赋值。

2、修饰方法中的参数

编写方法时,可以在参数前面添加final关键字,它表示在整个方法中,不会(实际上是不能)改 变参数

的值,具体类似于修饰数据。

即不能改变参数的值,但是可以改变引用类型参数的对象的 值。同时,即使没有final的修饰,参数的改

变也不会影响到方法外的变量。

3、修饰方法

final关键字修饰方法,它表示该方法不能被覆盖(重写)。另外类中所有的private方法都隐式指定为是final的,由于它无法在类外使用private修饰的方法,所以没有办法覆盖它。

4、修饰类

用final关键字修饰的类是无法被继承的,且final类中的所有成员方法都会被隐式地指定为final方法

abstract关键字

abstract 意思为抽象,是定义抽象类,抽象方法的关键字

父类是将子类所共同拥有的属性和方法进行抽取,这些属性和方法中,有的是已经明确实现了的,有的还

无法确定,那么我们就可以将其定义成抽象,在后日子类进行重用,进行具体化。这样,抽象类也就诞生

了。

抽象类是为了把相同的但不确定的东西的提取出来,为了以后的重用。定义成抽象类的目的,就是为了在

子类中实现抽象类。

比如说,定义一个球类运动父类,球类名字都能确定,但是具体怎么玩,没有固定的方法,可能是拍着玩(排球),有可能是用拍子击打玩(乒乓球),这个时候就可以将怎么玩这个方法定义成一个抽象方法。

package Test;class Test4 extends QiuY{   //Test4继承抽象类QiuY//进行对抽象方法的实现@Overridevoid QiuW(String name) {super.qiuname=name;System.out.println(qiuname+"应该用拍子打");}}
//定义一个抽象类,因为类中有抽象方法,所以必须是抽象类
abstract class QiuY{String qiuname;//因为怎么玩不确定,所以要定义为抽象方法abstract void QiuW(String name);
}
public class Test45{public static void main(String[] args) {Test4 test2=new Test4();test2.QiuW("乒乓球");}
}

运行结果为:

乒乓球应该用拍子打

1、用abstract修饰的类,即抽象类;用abstract修饰的方法,即抽象方法。

2、一旦类中包含了abstract方法,那类该类必须声明为abstract类,且该类不能用来创建对象。

在学习看来,这几个关键字大概是这样的理解,可以多去构思一下,这几个关键字到底本质上都是干什么用的,这次介绍的这几个关键字都是一些方法、变量、类的修饰符关键字,可以更好的让以后在写程序的小伙伴们可以严谨一些,解决自己很不理解的修饰符

Java常用的修饰符关键字相关推荐

  1. java默认访问修饰符是,java默认访问修饰符

    java.lapplet.Applet D. java.awt.Frame XXX13.下列选项中,哪个方法不是 JAVA 的访问修饰符(C) A. private B. protected C. f ...

  2. Java-Day11 面向对象遍程的入门 (类属性的默认值、构造方法、类的成员、static关键字、类的成员加载顺序、Java(权限)访问修饰符)

    目录 1. 类的属性的默认值问题 2. 构造方法(Constructor) 3. 类的成员 3.1 类的成员之一:属性 3.2 UML类图 4. static关键字 5. 类的成员加载(运行)顺序 6 ...

  3. 关于Java中各种修饰符与访问修饰符的说明

    关于Java中各种修饰符与访问修饰符的说明 类: 访问修饰符  修饰符  class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 ...

  4. Java非访问修饰符

    Java非访问修饰符 为了实现一些其他的功能,Java 也提供了许多非访问修饰符. Static:修饰符,用来创建类方法和类变量. Final:修饰符,用来修饰类.方法和变量,final修饰的类不能够 ...

  5. Kotlin 4 构造,对象,修饰符,关键字,委托

    注:当前文档为Kotlin自学总结,若什么地方含义模糊不清,敬请指教,谢谢:-). 目录:- 构造函数- 对象- 匿名对象- 对象声明- 对象表达式和对象声明之间的语义差异- 修饰符- 关键字- 委托 ...

  6. java中访问修饰符_Java中的非访问修饰符是什么?

    java中访问修饰符 Java非访问修饰符 (Java non access modifiers) We have 7 non-access modifiers in Java. The name o ...

  7. java中访问修饰符_Java中的访问修饰符介绍

    java中访问修饰符 什么是访问修饰符? (What are Access Modifiers?) Have you ever wanted to define how people would ac ...

  8. Java的四大修饰符

    public,private,default,protected是java的四大修饰符,下面分别主要介绍四者之间的区别 public(公共的) public是权限最大的修饰符,他可以修饰类,成员变量, ...

  9. Java中权限修饰符

    Java中访问修饰符public.private.protect.default范围   同一个类 同一个包 不同包的子类 不同包的非子类 Private √ Default √ √ Protecte ...

最新文章

  1. python重复执行函数_Python threading 单线程 timer重复调用函数
  2. OVS vswitchd启动(三十六)
  3. 用SRS和FFMPEG进行直播流转码
  4. 前端面试8:渲染机制
  5. java runtime shell_java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现...
  6. 信息革命的新世界正在到来,连睡觉都觉得浪费
  7. pycharm最常用的快捷键总结
  8. Leet Code OJ 118. Pascal's Triangle [Difficulty: Easy]
  9. 超级楼梯(HDU-2040)
  10. 使用selenium webdriver进行元素定位
  11. bzoj 3262: 陌上花开(cdq分治)
  12. 扫雷游戏网页版_借“买量”造爆款,《梦幻西游网页版》击穿H5游戏天花板
  13. 专精特新企业数据库-专精特新企业名单及汇总
  14. 【jzoj2173】【DFS】无根树
  15. Sourcemap是什么?Sourcemap的作用及用法概括
  16. Java五子棋书,本文实例讲述了java实现的五子棋游戏代码,分享给大家供大家参考,具体代码如下package gyb.exam; import java.awt.Bo...
  17. 港科夜闻|「广州粤港澳大湾区研究院」成立,香港科技大学校长史维教授获聘担任研究院顾问...
  18. github软件---百度网盘加速
  19. 一文看懂财务数据的分析方法
  20. 转型经验分享|年过30的传统汽车人,如何转型做自动驾驶

热门文章

  1. 我连对象都没有,你却让我搞对象存储?
  2. 乐高的第一绝版系列,你绝对没听说过
  3. Fiddler--利用Fiddler模拟数据
  4. Java char-'0'--char转换为int
  5. 翻了上千条买家评论后,我找到了vivo X60大卖的原因
  6. aws sqs_基准SQS
  7. “智慧+”制造数据分析应用方案
  8. yoloV5改进-针对小目标的NWD
  9. php 短信验证码30分钟,php下发短信验证码60秒简单验证
  10. sphider+scws