java中三大修饰符
一、static
1、属性:类变量 定义在类以内,方法以外,全类有效,全类公共一个属性
类变量与创建对象无关,有默认值0
使用方式 类名.类变量 System.out.println();
作用:计数器 生成id
class User{
static int count;
public User(){
count++;
}
}
Class Account{
long id;
static long num = 10000L;
public Account(){
id = num++;
}
}
public class TestStatic{
public static void main(String[] args){
new User();
new User();
new User();
System.out.println(User.cout);
Account a1 = new Account();
Account a2 = new Account();
System.out.println(a1.id);
System.out.pringln(a2.id);
}
}
/*
new Account(); 调用构造方法 给id属性赋值 id 10000L num++ 10001L
new Account(); id 10001L num++ 10002L
id 10002L num++
*/
2、方法:静态方法
加了static的普通方法,工具方法,全类共用一个功能
自己定义静态方法的可能性不大,一般都是使用jdk中写好的静态方法
使用方式:类名.静态方法名称() Math.sqrt();
注意:
1》覆盖 方法名,返回值,参数表一样。修饰符和父类一样或者比父类的更宽泛
2》静态方法只能被静态方法覆盖,并且没有多态,
引用类型是什么类型,调用的就是什么类型的方法
3、初始化代码块
静态初始化代码库
作用:给静态属性赋值
类加载时被执行一次,只有一次
类加载:在虚拟机第一次使用一个类的时候,需要类的相关信息加载到内存中并保存起来的过程
类加载时,初始化静态属性,执行静态初始化代码块
类加载时机:
new对象进行类加载,访问静态成员,子类对象类加载触发父类对象先类加载
二、final 最终的,最后的
变量: 常量 不能修改变量中存储的值 (基本类型值不能变,引用类型地址不能变)
final修饰实例变量和类变量时没有默认值,需要手动赋值
实例变量 构造方法赋值或者初始值
类变量 初始值或者静态初始化代码块里赋值
public static final 好伙伴
方法: 不能被覆盖(可继承,可调用,可重载)
类: 不能被继承
三、abstract 抽象的(约束多态语法的正确使用)
类 不能new对象
方法 没有实现部分 只有声明部分
注意:有抽象方法的类一定是抽象类
子类继承抽象类,要么选择把所有的抽象方法都实现,
如果没有实现相应的抽象方法,要求该类也必须是抽象类
接口
语法:
特殊的抽象类,为多态服务,只能声明引用,不能new对象
关键字 interface
实现接口(继承抽象类一样) implements
所有属性 public static final(默认)
所有方法 public abstract(默认)
没有构造方法
作用:
支持多继承
接口和接口直接多继承 extends
类和接口直接多继承 implements
注意:一个类只能继承一个父类,可以实现多个接口(降耦合工具)
标准:(多态)
接口回调:在定义了接口之后,现有的接口使用者,然后在定义接口的实现者
====================================================
===============接口和抽象类的区别============================================================
- 抽象类和接口的相同点
①.在java语言中,接口和抽象类都不能被实例化,都位于继承树的顶端,用于被其他类实现和继承。
②.接口和抽象类都可以包含抽象方法。
③.实现接口或继承抽象类的普通子类都必须实现这些抽象方法。
- 抽象类和接口的不同点
1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。
5)接口里不能定义静态方法;抽象类里可以定义静态方法。
6)接口里不包含构造器,抽象类可以包含构造器。抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。接口里不能定义任何构
造方法,系统也不会提供默认构造方法。
7)接口里不能包含初始化块,但抽象类可以包含初始化块。
- 应用(适配器模式)
目的:
将一个类的接口转换成客户希望的另外一个接口。A d a p t e r 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
原理:
目标接口(Target):客户所期待的接口。
需要适配的类(Adaptee):需要适配的类或适配者类。
适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。

实例:
如果一个普通类要实现一个接口,则要覆盖此接口中的所有抽象方法。如果一个接口中定义的方法过多,但是在子类中又用不到这么多的抽象方法 ,则肯定很麻烦,所以此时需
要一个中间的过度,但是过度类又不希望被直接使用,所以将此过度类定义成抽象类最合适(适配器),并在此抽象类中实现接口中的所有方法,方法体为空,则以后的子类直接继承
此 抽象类,就可以根据需要选择性的覆盖父类的方法。
java中三大修饰符的更多相关文章
- Java中的 修饰符
java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符 访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...
- Java中final修饰符深入研究
一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...
- Java中各种修饰符与访问修饰符
Java中各种修饰符与访问修饰符 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备 ...
- Java中访问修饰符public、private、protecte、default
Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅 ...
- java中的修饰符和基本数据类型
1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...
- 对于Java中权限修饰符的理解
老是把Java中权限修饰符给忘记,写一个博客加深印象吧 权限分为四个作用域:当前类,同一个包,其他包的子类,其他包的类. 首先要知道包的概念,Java中一个包是指一个package下的所有文件. pr ...
- Java中常用修饰符使用汇总
修饰符汇总: 一:public protected default private 修饰类,修饰方法,修饰属性,修饰代码块. 类: 顶级类只能用public 修饰,顶级类不能使用private 和p ...
- Java中的修饰符
-----------------------------------------------01----------------------------------------------- 类,方 ...
- java中权限修饰符protected的使用注意事项
java中四种权限修饰符, 平时编码中最常用的其实public和private, 虽然对protected的概念一直都知道, 但真正使用时才发现有些偏差. protected表示被其修饰的成员可以被本 ...
随机推荐
- Linux软件安装管理 - CentOS (三)
1. 软件包管理简介 2. rpm命令管理(Redhat Package Manager) 3. yum在线安装 4. 源码包管理 4.1 源码包和RPM包的区别 4.1.1 区别 安装前:概念上的区 ...
- makefile文件知识点记录
1赋值 = 是最基本的赋值:= 是覆盖之前的值?= 是如果没有被赋值 += 是添加等号后面的值 1.“=” make会将整个makefile展开后,再决定变量的值.也就是说,变量的值将会是整个make ...
- web.xml讲解
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "- ...
- Weblogic概念与基础
WebLogic Server 1.BEA WebLogic Server 1.Domain:域是个逻辑概念,用来组织管理一系列的应用服务器实例,中心配置文件Config.xml. 2.Cluster ...
- 新发现的一些C函数
今天看lsocket代码,发现有三个C函数,以前一直没有用过. 觉得特别有意思,一个strspn,一个strrchr,一个getaddrinfo. strspn #include <string ...
- IIS 批处理 bat
c:\windows\system32\inetsrv\AppCmd.exe stop apppool /apppool.name:"ASP.NET 4.0"c:\windows\ ...
- iOS导航标题不居中问题(转载)
前言 一直以来都让我很头痛的一个问题:系统自带的导航条,在标题文字很长时,进入到下一个界面,而下一个界面的标题也很长时,就会出现标题不居中显示. 曾经,我尝试过很多种办法,但是都没有从根上解决问题.下 ...
- Servlet源码初探
年底,公司的事情告一段落,就来捣鼓一下这个Servlet源码,为下一步的spingmvc源码初探做准备 1.Servlet接口 public interface Servlet { void init ...
- 计算机网络课程优秀备考PPT之第七章应用层(七)
为了记录自己从2016.9~2017.1的<计算机网络>助教生涯,也为了及时梳理和整写笔记! 前期博客是, 计算机网络课程优秀备考PPT之第一章概述(一) 计算机网络课程优秀备考PPT之第 ...
- Redis 的几种数据结构&五种数据类型对象
先看几种数据结构 通过分析底层的数据结构,学习如何根据场景选型和设计 1,简单动态字符串 redis使用的字符串SDS有别于C语言中的字符串 a, 结构 free字段为已分配但未使用的空间 len为已 ...