知识需要不断回顾和重新认识

一:static

static类型变量初始值只能被赋值一次,它的整个生命周期是源程序,程序结束前变量都不会被释放。

例如:

 for(int i = 0; i<10; i++)
{
static int a = 0;
a++;
}

循环结束之后a=10.

静态局部变量和静态全局变量,注意作用范围。静态变量存在于内存中,不用实例化对象就可以使用它(静态局部变量走出函数,虽然它还是存在,但是不能使用)

因为static不依赖于实例化对象,它是属于整个类的,即所有对象共享一个静态变量,而如果在某个方法中定义了一个静态变量,它的实际意义不大,因为,这个静态变量只会在实例化了这个对象之后使用,已经变为了归某个对象所有,没有存在的意义。

当然,如果在static前边加上访问权限修饰符,会根据权限决定不同类是否能使用这个static变量。

基本类型的静态局部变量如果声明时没有覆初始值,系统自动赋予0.(使用的时候注意合理使用静态局部变量和全局变量,虽然静态局部变量的作用范围有限,但是可以通过再次调用这个定义它的函数使用这个局部变量,全局变量有时会造成意外的副作用)

so在程序中什么地方可以利用静态字段和静态构造方法?1:对象之间共享值;2:方便访问变量,比如不会经常变化而又频繁使用的数据,例如连接字符串,配置信息等,这样只用进行一次读取,以后就可以方便的使用了,同时也节约了托管资源,因为对一个类无论创建了多少个实例,它的静态字段永远都只有一个副本。而实例变量,每创建一个实例,jvm就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(实例对象.变量)。

static代码块仅在类加载的时候执行一次,所以如果需要通过计算初始化static变量,可以在静态代码块里边做。

static方法通过类名调用,所以,非静态函数可以直接使用静态变量,而static函数不能调用非static的变量,只能调用static类型的变量和函数,并且不能使用this或者super关键字,因为它属于整个类。static方法独立于任何实例,所以它必须被实现,不能是抽象的abstract。

二:final

无法改变的,可以修饰非抽象类、非抽象类成员方法和变量。

final类不能被继承,final类中的方法默认是final的;

final方法不能被子类方法覆盖,但可以被继承;

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

final不能用于修饰构造函数。

note:父类的private成员方法是不能被子类覆盖,所以private类型的方法默认是final类型的。

fianl类:何时需要final类?设计的时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会再被扩展。

final变量:一旦赋值,(可以修饰局部变量,静态变量和实例变量)不可修改,但是可以先声明而不给初始值,这样提高了灵活性,比如一个类中的final变量可以根据实例化的对象不同而有所不同(所以空白final依赖于某个对象使用),但是保持了不变的特征。这种先声明而不初始化叫做final空白,编译器都确保final在使用之前都会被初始化。

final方法:when?如果一个类不允许她的子类覆盖某个方法,则把这个方法定义为final类型。有两种目的:1:锁定方法,防止任何继承类修改她的意义和实现;2:高效:编译器在遇到调用final方法的时候会转入内嵌机制,大大提高执行效率。

三:abstract

抽象类(不可以被实例化,抽象方法描述系统具有什么功能,没有具体实现 )和具体类(可以被实例化,必须有方法体),:

可以修饰类和方法,修饰类时放在类名前;

有抽象方法的类一定是抽象类;(如果子类没有完全实现父类中的所有抽象方法,那么子类也必须被定义为抽象类,否则编译报错)

抽象类不一定有抽象方法,可以全是具体方法;

没有抽象构造方法,也没有抽象静态方法;

abstract修饰类:这个类不能生成对象实例,但可以作为对象变量声明的类型,即编译时类型,抽象类相当于类的半成品,需要子类继承并且覆盖其中的抽象方法。

abstract修饰方法:只有声明,没有实现(实现部分用;代替),需要子类继承实现(override覆盖),这样就可以以多态的方式调用。when?定义标准,方法一时间想不到具体怎么实现,或者需要子类去实现而定义某种标准。实质:制定标准(模版),通过子类实现标准。模板中不允许修改的方法可以用final,不公开的部分用protected。

(父类引用指向子类对象,使用多态,实际调用子类的方法)

java笔记之static&final&abstract的更多相关文章

  1. 浅析java修饰符之public default protected private static final abstract

    浅析java修饰符之public default protected private static final abstract 一   修饰符的作用:用来定义类.方法或者变量,通常放在语句的最前端 ...

  2. java里的static/final含义

    java里的static/final含义 static static可以修饰:属性,方法,代码段,内部类(静态内部类或嵌套内部类) static修饰的属性的初始化在编译期(类加载的时候),初始化后能改 ...

  3. Java 面向对象之static,final,匿名对象,内部类,包,修饰符

    01final关键字概念 A: 概述 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承, 或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这 ...

  4. 菜鸡的Java笔记 第二十一 final 关键字

    使用final定义类,属性,方法            final在一些书中被称为终结器,意思是:利用final定义的类不能够有子类,利用final定义的方法不能够被覆写,利用final定义的变量就成 ...

  5. 三大修饰符static,final,abstract,接口和抽象类的区别

    package com.cityhero.test; public class ThreeModifier { //static静态的 // 概念:static可以修饰方法和属性,被static修的方 ...

  6. java笔记整理

    Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...

  7. Java笔记8-抽象接口

    高级特性部分: 抽象(abstract) 接口(interface) 提纲: 抽象类的定义和使用 模板设计模式的使用 接口的定义和使用 回调函数 区别抽象类和接口的异同 软件设计原则--------- ...

  8. java笔记——Java关键字static、final使用小结

    static  1. static变量     按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量.两者的 ...

  9. java修饰符public final static abstract transient

    JAVA 修饰符public final static abstract transient  关键字: public final static abstract ...  1.public prot ...

随机推荐

  1. [loj#101] 最大流 网络流模板

    #101. 最大流 内存限制:512 MiB时间限制:5000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 这是一道模板题. 给定  ...

  2. Codeforces Round #445 A. ACM ICPC【暴力】

    A. ACM ICPC time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  3. Python的程序结构[4] -> 函数/Function[1] -> 内建函数

    内建函数 / Built-in Function or Method Python中有许多的内建函数(查看内建模块部分),此处将对内建函数进行介绍 内建函数 ord / built-in functi ...

  4. 洛谷——P1258 小车问题

    P1258 小车问题 题目描述 甲.乙两人同时从A地出发要尽快同时赶到B地.出发时A地有一辆小车,可是这辆小车除了驾驶员外只能带一人.已知甲.乙两人的步行速度一样,且小于车的速度.问:怎样利用小车才能 ...

  5. (转)NSString 类的使用

    官网连接地址:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Strings/Articles/Creat ...

  6. 洛谷 P4538 收集邮票

    题目描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所 ...

  7. Mysql Grant权限

    查看用户权限: SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user; 权限取决于最上一条记录的值 如果需要收回权限: REV ...

  8. SQL Server 获取日期是星期周几(默认从周日开始到周六 1-7)

    ALTER FUNCTION [dbo].[GetWeekDay] ( @Year INT, @Month INT ,@Day INT ) RETURNS INT AS BEGIN DECLARE @ ...

  9. java的几个特性

    前言 本文主要介绍java语言的三个特性:类型协变和逆变,动态代理和静态代理,注解. 协变和逆变 借用Treant的博文,逆变与协变用来描述类型转换(type transformation)后的继承关 ...

  10. IP分类:A,B,C,D,E五类

    IP地址分为五类: IP地址分为五类:A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验. 常用的三类IP地址 IP = 网路地址(网络号)+主机地址(主 ...