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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

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

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