2016.10.13一些重要关键字的总结
来源:互联网 发布:网络信息安全的例子 编辑:程序博客网 时间:2024/04/19 10:19
一.重点分析关键字:
1.访问权限修饰符:public private protected default
四个权限从大到小依次排列:public protected default private
public
protected
default
private
同一个类
true
true
true
true
同一个包
true
true
true
false
子类
true
true
false
false
不同包中
true
false
false
false
在不同包下面只有public与protected可以访问,而且protected必须是继承关系才能够访问.
2.this/super:
this关键字代表了所属函数的调用者对象.
super关键字代表了父类空间的引用
super关键字的语法:
(1).子父类存在同名的成员时,可以用super关键字访问父类的成员.
(2).可以通过super关键字调用指定的父类的构造方法.
super关键字调用父类方法要注意的事项:
(1).super关键字调用父类的构造函数时,该语句必须要是子类构造函数中的第一个语句.
(2).super与this不能同时出现在同一个构造函数中调用其它的构造函数,因为两个语句都需要放在第一个语句.
例如:
package org.lxh.demo;
class Fu{
intx = 10;
Stringname;
public Fu(){
System.out.println("父类无参的构造方法被调用!");
}
public Fu(Stringname){
this.name = name;
System.out.println("父类带参的构造方法被调用!");
}
publicvoid eat(){
System.out.println("爸爸吃薯条");
}
}
class Ziextends Fu{
intx = 20;
public Zi(String name){
super(name); //指定调用父类带一个参数的构造方法
System.out.println("子类带参的构造方法被调用!");
}
publicvoid print(){
System.out.println("x="+super.x);
}
publicvoid eat(){
System.out.println("儿子吃龙虾");
}
}
publicclass lvjiakai{
publicstaticvoid main(String[] args){
Ziz =new Zi("狗娃");
z.print();
}
}
此程序的输出结果:
父类带参的构造方法被调用!
子类带参的构造方法被调用!
x=10
3.final(最终的):
final关键字的用法:
(1).final关键字修饰一个基本类型的变量时,该变量不能被重新赋值,第一次的值就是最终的值.
(2).final关键字修饰一个函数时,该函数不能被重写.
(3).final关键字修饰一个类时,该类不能被继承.
例如:
package org.lxh.demo;
class Fu{
intx = 10;
Stringname;
public Fu(){
System.out.println("父类无参的构造方法被调用!");
}
public Fu(String name){
this.name = name;
System.out.println("父类带参的构造方法被调用!");
}
publicvoid eat(){
System.out.println("爸爸吃薯条");
}
}
class Ziextends Fu{
intx = 20;
public Zi(String name){
super(name); //指定调用父类带一个参数的构造方法
System.out.println("子类带参的构造方法被调用!");
}
publicvoid print(){
System.out.println("x="+super.x);
}
publicvoid eat(){
System.out.println("儿子吃龙虾");
}
}
publicclass lvjiakai{
publicstaticvoid main(String[] args){
Ziz =new Zi("狗娃");
z.print();
}
}
此程序的输出结果:
父类带参的构造方法被调用!
子类带参的构造方法被调用!
x=10
package org.lxh.demo;
class Circle{
doubler;
finaldoublepi = 3.14;
public Circle(doubler){
this.r = r;
}
publicfinalvoid getArea(){
System.out.println("圆形的面积是:"+r*r*pi);
}
}
publicclass lvjiakai extends Circle{
public lvjiakai(doubler) {
super(r);
}
publicstaticvoid main(String[] args){
lvjiakaic =new lvjiakai(4.0);
c.getArea();
}
publicvoidgetArea(){
System.out.println("我是圆...");
}
}
此程序报错了!
4.static(静态修饰符):
使用前提:如果有数据需要被共享给所有所有对象使用时,那么就可以使用static修饰.
静态成员变量的访问方式:
方式1:使用对象进行访问.
格式:对象.变量名
方式2:只基金使用类名进行访问.
格式:类名.对象名
静态成员方法的访问方式:
方式1:使用对象进行访问.
格式:对象.静态函数名
方式2:直接使用类名进行访问.
格式:类名.静态函数名
使用静态函数要注意的事项:
(1).静态函数可以使用类名或者对象进行调用,而非静态函数只能使用对象进行调用.
(2).静态函数可以直接访问静态成员,但是不能直接访问非静态的成员,因为静态函数调用时对象可能还没有创建,此时就不存在非静态的成员变量.
(3).非静态函数可以调用静态与非静态的成员,因为非静态函数必须要由对象调用,当对象存在时,静态函数必然已经存在.
静态数据的生命周期:静态的成员变量数据是优先于对象存在的.
静态代码块:static{
}
静态代码块是在对应的字节码文件加载到内存时就执行的!
例如:
package org.lxh.demo;
class Baby{
intid;
Stringname;
//构造代码块
{
cry();
}
public Baby(inti,Stringn){
id = i;
name = n;
}
public Baby(){
}
publicvoid cry(){
System.out.println(name+"哭!!");
}
}
publicclass lvjiakai{
publicstaticvoid main(String[] args){
new Baby(110,"狗娃");
}
}
此程序的输出结果:null哭!!
构造代码块:{
}
构造代码块的作用:给对象进行统一的初始化.
注意构造函数、构造代码块、成员变量赋值的顺序:
(1).一旦经过java编译器编译后,构造代码块的代码就会被移动到构造函数中执行,构造函数中搞得代码是最后执行的.
(2).成员变量的显式初始化与构造代码块的代码是按照当前代码的真实先后顺序执行的.
如果有静态代码块,则静态代码块还会优先于构造代码块执行,类只被加载一次时,静态代码块必然只执行一次.
综合举例:
package org.cn.lxh;
publicclassTest{
publicstaticvoid main(String[]args){
Studentstu1=newStudent();
Studentstu2=newStudent();
stu1.play();
Student.study();
}
}
package org.cn.lxh;
publicclassStudent{
public String address;
publicstatic String name;
static{
System.out.print(1);
}
{
System.out.print(2);
}
public Student(){
System.out.print(3);
}
publicstaticvoid study(){
System.out.print(4);
}
publicvoid play(){
System.out.print(5);
}
}
此程序的输出结果:1232354
因为Student类只加载了一次,所以静态代码块只执行了一次.
PS:本人初学java,有很多地方有不足,希望博友们多多指点!!!
- 2016.10.13一些重要关键字的总结
- java基础知识--一些重要的关键字
- C++中几个重要的关键字总结
- android 一些重要的知识点总结
- iOS开发--一些重要的总结
- PHP中一些重要的函数总结
- C++中重要关键字总结
- C++中重要关键字总结
- C++中重要关键字总结
- 7--黑马程序员--技术总结之几个重要的关键字
- USB的重要关键字
- 几个重要的关键字
- 【关键字】一些关键字用法总结
- matlab实战中一些重要的函数总结
- java中重要的关键字
- 一些重要的属性
- 一些重要的文件
- 一些重要的计数器
- 微软面试题-推理
- 递推2
- AIM Tech Round 3 (Div. 2) E. Centroids (树形dp) ★ ★ ★
- 字符数组的使用
- 逼格充值器:线程安全的单例模式!
- 2016.10.13一些重要关键字的总结
- 日记10月13日
- IPC机制第三篇,ContentProvider实现
- 【CodeChef】 Chef and Stones
- 使用七牛直播平台SDK和环信IM低仿映客直播APP的应用
- [coseforces] B - Bakery 贪心
- 解读TDD的五大误区
- 白话经典算法系列之六 快速排序 快速搞定
- org.apache.catalina.LifecycleException:java web异常