关键字总结

[b]1.公共修饰符(public)[/b]
被public修饰的成分可以被任何程序访问.如果将成员变量或者是成员方法的访问
权限设置为public类型.那么成员变量或者成员方法所在的类以及其子类,同一个包中
的类,相同项目里的类都可以访问成员变量和方法.

[b]2.保护修饰符(protected)[/b]
protected访问修饰符可以将修饰的方法,成员变量被类自身及其子类访问到.子类
可以在一个包内,也可以不在一个包内.同一个包内的其他类也可以访问到protected
成员.

[b]3.私有修饰符(private)[/b]
该修饰符是java实现隐藏的关键技术,被声明为private的成员变量和方法只能
被类自身访问到,即使是同一个包中的类也不可以访问使用private来修饰的成员.

[b]4.默认修饰符(不写)[/b]
默认修饰符是在程序员没有指定访问控制修饰符的情况下,表示使用默认的修饰符.这
时的成员变量和方法只能够在自己的类以及该类的同一个包下的类中进行访问.与修饰符
protected相比,protected还能被自己在或不在同一个包中的子类访问到,而默认
修饰符不能.

[b]5.final[/b]
表示最终的.
1.被它所修饰的成员变量在整个程序执行过程中最多可以进行一次赋值,通常
使用它来定义常量.
2.被它修饰的类,不可以被继承.
3.被它修饰的方法不可被重写.

[b]6.static[/b]
表示静态的.被它修饰的属性成为静态属性,该类所有的对象共享这个属性.被它修饰
的方法称为静态方法,该方法在调用时只跟类名有关.被它修饰的代码块是在主函数执行
前就会执行的代码.静态属性和静态方法都属于类,它不属于任何的具体事例.静态变量
和静态方法的使用只需要使用类名,并使用"."进行调用.
举例说明:
一个类可以实例化很多对象,各个对象都分别占据自己的内存.
比如下面代码:
 class Customer{
String name;
}


public class StaticTest{
public static void main(String [] args){
Customer zhangsan = new Customer();
zhangsan.name = "张三";
Customer lisi = new Customer();
lisi.name = "李四";
}
}

在主函数中,定义了zhangsan,lisi两个对象,这两个对象具有同过的属性name,但是如果我们要保存zhangsan,lisi,乃至
所有对象公有的信息,比如,该类用在某个银行系统中,我们要保存他们所在的银行名称,而每个对象的银行名称都一样.这时就要用到
关键字static.
代码如下:
 class Customer{
String name;
static String bankName;

}


public class StaticTest{
public static void main(String [] args){
Customer zhangsan = new Customer();
zhangsan.name = "张三";
zhangsan.bankName = "长沙银行";
Customer lisi = new Customer();
lisi.name = "李四";
System.out.println("lisi.bankName="+lisi.bankName);
}
}

打印的结果是lisi.bankName=长沙银行

注意:从底层来讲,静态变量在类被载入时创建,只要类存在,静态变量就存在,不管对象是否实例化.
静态变量可以通过"对象.变量名" 来访问,但一般采用"类名.变量名"来访问.

[b]7.this[/b]
this有两个用途.第一个是指本类当前正在被操作的一个对象.第二个是指在子类构
造方法中调用本类的某一个构造方法(参数个数和顺序对应)

[b]8.super[/b]
使用的情景1:
子类重写父类的方法后,子类再调用此方法则是调用重写后的方法,如果子类想再调用重写前的方法怎么办呢?
可以用关键字super来解决.
使用情景2:
只要实例化子类的对象,系统就会自动先实例化一个父类对象与之对应.此时
调用的是父类没有参数的构造函数.但是如果父类构造函数有参数呢?此时系统就必须要求
在实例化对象时,传入参数,否则报错.要解决该问题,第一种办法是给父类增加一个不带参
数的空构造函数.第二种办法就是在子类构造函数中,第一句用super来给父类构造函数传值.
比如:
  class Dialog{
protected String title;
public Dialog(String title){
this.title=title
}
public void show(){
System.out.println(title+"对话框显示");
}
}


class FontDialog extends Dialog{
private String frontName;
public FontDialog(String title,String fontName){
super(title);
this.fontName = fontName;
}
}

public class main{
public static void main(String[] args){
FontDialog fd = new FontDialog("字体","宋体");
}
}

综上所述,super的用途如下:
1.在子类重写方法后的情况下,通常用super在子类中调用父类中的方法,
2.在子类构造方法中调用父类的构造方法
注意:在子类构造方法中调用父类构造方法时,必须写在第一行.
例子:


9.transient
它只能够用来修饰非静态的成员变量.

10.volatile
同transient相同,只可以修饰成员变量.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值