码迷,mamicode.com
首页 > 编程语言 > 详细

java学习笔记(三)java中的修饰符abstract、static与final

时间:2014-07-17 21:08:57      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:修饰符   static   final   abstract   

一、四种访问级别的访问范围

访问级别 访问修饰符 同类 同包 子类 不同的包
公开 public bubuko.com,布布扣 bubuko.com,布布扣 bubuko.com,布布扣 bubuko.com,布布扣
受保护 protected bubuko.com,布布扣 bubuko.com,布布扣 bubuko.com,布布扣 bubuko.com,布布扣
默认 没有访问修饰符 bubuko.com,布布扣 bubuko.com,布布扣 bubuko.com,布布扣 bubuko.com,布布扣
私有的 private bubuko.com,布布扣 bubuko.com,布布扣 bubuko.com,布布扣 bubuko.com,布布扣

二、使用abstract修饰符需要遵守的语法规则

1、抽象类中可以没有抽象方法,但是包含抽象方法的类必须定义为抽象类,即用abstract修饰;
2、抽象类跟抽象方法不能被final修饰符修饰;
3、抽象类中可以有非抽象方法,因为继承抽象类的子类必须重写父类中所有的抽象方法,因此抽象类中不能有抽象构造方法和抽象静态方法;
4、抽象方法没有方法体;
5、如果子类没有重写父类中的抽象方法,则子类也必须定义为abstract。
package wbb.java.modifies;

/**
 * Created with IntelliJ IDEA.
 * User: wbb
 * Date: 14-7-17
 * Time: 下午2:52
 * To change this template use File | Settings | File Templates.
 */
public abstract class AbstractDemo {
    public abstract void xxx();
}

abstract class Test extends AbstractDemo {
//    public void xxx(){}   //用abstract修饰子类,或者重写父类中的抽象方法
}
作用:实现多态。

三、修饰符static

static可以用来修饰成员变量,成员方法,代码块。
1、被static修饰的成员变量和成员方法,可以直接用类名.静态变量或静态方法直接调用;
2、被static修饰的代码块称为静态代码块,当java虚拟机加载类时,就会执行该代码块。
注:静态变量与实例变量的区别是:java虚拟机只会为静态变量分配一次内存,而没创建一个实例变量虚拟机就会为其分配一次内存。其作用是能被类的所有实例共享,可作为势力之间进行交流的共享数据。例如我们在项目中经常会执行同样的SQL语句,这样每次都要写一次sql语句未免显得过于繁琐,我们可以专门写个类用于存放哪些常用的SQL语句,里面只定义各种需要重复执行的SQL语句的静态变量。
package wbb.java.modifies;

/**
 * Created with IntelliJ IDEA.
 * User: wbb
 * Date: 14-7-17
 * Time: 下午3:45
 * To change this template use File | Settings | File Templates.
 */
public class StaticDemo {
    public static final String sqlStr = "SELECT * FROM DUAL";
}

class A extends StaticDemo{
    StaticDemo a = new StaticDemo();
    public static void main(String[] args) {
        System.out.println(StaticDemo.sqlStr);
    }
}
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的.静态代码块的作用可用于初始化类,给类的成员变量赋值等等。
package wbb.java.modifies;

/**
 * Created with IntelliJ IDEA.
 * User: wbb
 * Date: 14-7-17
 * Time: 下午4:04
 * To change this template use File | Settings | File Templates.
 */
public class StaticProgram {
    static {
        System.out.println("静态代码块执行");
    }

    public static void main(String[] args) {
        //运行结果:输出“静态代码块执行”
    }
}

四、final修饰符

final意为“不可改变的”,可以修饰非抽象类、非抽象成员方法和变量。
1、被final修饰的类不能被继承,没有子类;
2、被final修饰的方法不能被子类的方法覆盖;
3、用final修饰的变量表示常量,只能被赋值一次;
package wbb.java.modifies;

/**
 * Created with IntelliJ IDEA.
 * User: wbb
 * Date: 14-7-17
 * Time: 下午4:10
 * To change this template use File | Settings | File Templates.
 */
public final class FinalDemo {
    private static final int num = 1;

    public static void main(String[] args) {
//        num ++; 被final修饰的变量不能改变
    }
}

//class TestFinalClass extends FinalDemo {} 被final修饰的类不能被继承

class TestFinalFun {
    public final void finalFun() { }
}

class TestFinalFun2 extends TestFinalFun {
//    public void finalFun() { }  被final修饰的方法不能被重写
}










java学习笔记(三)java中的修饰符abstract、static与final,布布扣,bubuko.com

java学习笔记(三)java中的修饰符abstract、static与final

标签:修饰符   static   final   abstract   

原文地址:http://blog.csdn.net/w_basketboy24/article/details/37907635

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!