java 关键字小结

java 关键字小结1 this 和 super 一个类在使用 this 时调用的是此类中的数据变量和方法 使用 super 时是调用的父类中的变量和方法 父类 publicclassK publicString father publicKeyWor System out print 父类构造 1this thi

1.this和super

一个类在使用this时调用的是此类中的数据变量和方法,使用super时是调用的父类中的变量和方法

/*父类*/ public class KeyWordFatherTest {    public String str="father";  public KeyWordFatherTest(){    System.out.print("父类构造1this:"+this.str+"\n");  }    public KeyWordFatherTest(String str){  this.str = str;  System.out.print("父类构造2this:"+this.str+"\n");  } } 
/*子类*/ public class KeyWordSonTest extends KeyWordFatherTest{  public String str = "son";    public KeyWordSonTest(){  System.out.print("子类构造1this:"+this.str+"\n");  }      public KeyWordSonTest(String str){  super(str);  System.out.print("子类构造2this:"+this.str+"\n");  }      public static void main(String[] args) {  System.out.print(new KeyWordSonTest());//输出1 // System.out.print(new KeyWordSonTest("nihao"));//输出2    } } 

当上面程序执行main方法中的输出1时,控制台输出为

父类构造1this:father 子类构造1this:son test.KeyWordSonTest@2cc7d960

由结果可以看到this调用的是当前类的数据变量。

此例子中需要注意的是子类实例化之前会调用父类的无参构造方法,究其原因是因为子类继承了父类,那么就默认的含有父类的公共成员方法和公共成员变量,这些方法和变量在子类里不再重复声明。如果你初始化子类的时候,不初始化父类,那么你通过子类调用父类方法或变量的时候会出现什么情况呢?当然就是抛异常阿!所以,Java虚拟机会在你初始化子类的时候默认的初始化子类的父类。

当上面程序执行main方法中的输出1时,控制台输出为

父类构造2this:nihao 子类构造2this:son test.KeyWordSonTest@79fc7299

由结果可以看到super调用的是当前类父类的数据变量。

2.访问权限default,public,protected,private

访问权限 类本身 package包内 子孙类 package包内
public 可以 可以 可以 可以
protected 可以 可以 可以 不行
default 可以 可以 不行(在同一包内可以) 不行
private 可以 不行 不行 不行
         

3.关键字static

static静态方法和静态变量是属于某一个类,而不属于类的对象

静态方法和静态变量的引用直接通过类名引用。

静态方法不能被子类重写。

在静态方法中不能调用非静态方法和引用非静态的成员变量。反之,则可以。

静态变量和静态方法在类被加载的时候就分配了内存空间。

静态变量的值可以被修改。

4.关键字final

当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。

使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的方法体。

final成员变量表示常量,只能被赋值一次,赋值后值不再改变。


5.关键字native

native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。





版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232086.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • charles抓包教程(微信7以上如何抓包)

    APP抓包和微信小程序抓包-Charles的精简使用教程目标教程一、安装Charles二、Charles简介(1)Charles欢迎页面(2)基础功能按钮(3)抓包内容显示方式(4)过滤抓包内容三、手机配置Charles代理四、解决配置Charles代理之后手机无法上网的问题五、手机APP抓包(1)对“花生地铁”APP进行抓包。六、微信小程序抓包(1)安装SSL…

    2022年4月12日
    955
  • 动态规划之01背包问题及其优化(python实现)「建议收藏」

    动态规划之01背包问题及其优化(python实现)「建议收藏」动态规划之01背包问题及其优化(python实现)**背包问题(**Knapsackproblem)是一种组合优化的NP完全问题。问题描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。解决思路:动态规划,对每一件物品遍历背包容量,当背包可容纳值大于等于当前物品,与之前已放…

    2022年7月26日
    5
  • win10 directshow无法释放_windowmode

    win10 directshow无法释放_windowmode现在单独的directshowsdk包已经没有了,从directx9.0c开始directshow和directx分开发布,现在的directshow已经集成到windowsSDK当中了,不需要单独安装。

    2022年10月12日
    1
  • 链表排序算法_怎么对链表进行排序

    链表排序算法_怎么对链表进行排序排序算法概述盗个图转自:https://www.cnblogs.com/onepixel/articles/7674659.html排序算法复杂度由于是链表排序,首先定义链表节点数据结构common.htypedefstructNodeLNode;structNode{intdata;LNode*next;LNode*prev;};备注:以下排序…

    2022年10月11日
    6
  • Python中字符串String去除出换行符(\n,\r)和空格的问题「建议收藏」

    Python中字符串String去除出换行符(\n,\r)和空格的问题「建议收藏」Python中字符串String去除出换行符和空格的问题(\n,\r)在Python的编写过程中,获取到的字符串进场存在不明原因的换行和空格,如何整合成一个单句,成为问题。方法:一、去除空格“·”代表的为空格  strip()"···xyz···".strip()#returns"xyz""···xyz···".lstrip()…

    2022年6月10日
    115
  • 动画插件–AnimateCSS

    动画插件–AnimateCSS1.什么是Animate.css?其实swiper-animate就是参考Animate.css演变出来的一个插件, Animate.css和swiper-animate一样都是用于快速添加动画的, 所以会用swiper-animate就会用Animate.css2.Animate.css的使用:引入animate.css的文件 给需要执行动画的元素添加类名3.示例animated这个类名是animated.css的基类,但凡需要通过animated.css来添加动画,都需

    2022年7月27日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号