Java进阶知识体系_static关键字和继承

Java进阶知识体系
(一)、类和对象
(二)、方法和封装
(三)、static关键字和继承
(四)、多态
(五)、特殊类

(三)、static关键字和继承
1,static关键字
基本概念
使用static关键字修饰成员变量表示静态的含义,此时成员变量由对象层级提升为类层级,也就是整个类只有一份并被所有对象共享,静态成员(成员变量和成员方法)随着类的加载而加载,与是否创建对象无关。
static关键字修饰的成员可以使用引用.的方式访问,但推荐类名.的方式。
static关键字作用
使用方式
在非静态成员方法中既能访问非静态的成员又能访问静态的成员。(成员:成员变量 + 成员方法, 静态成员被所有对象共享) 在静态成员方法中只能访问静态成员不能访问非静态成员。(成员:成员变量 + 成员方法, 因为此时可能还没有创建对象)
在以后的开发中只有隶属于类层级并被所有对象共享的内容才可以使用static关键字修饰。(不能滥用static关键字)

构造块和静态代码块
构造块:在类体中直接使用{}括起来的代码块。每创建一个对象都会执行一次构造块。
静态代码块:使用static关键字修饰的构造块。静态代码块随着类加载时执行一次。
如主方法:
public static void main(String[] args){}

执行顺序
先执行父类的静态代码块,再执行子类的静态代码块。
执行父类的构造块,执行父类的构造方法体。
执行子类的构造块,执行子类的构造方法体。

单例设计模式的概念
在某些特殊场合中,一个类对外提供且只提供一个对象时,这样的类叫做单例类,而设计单例的流程和思想叫做单例设计模式。
单列设计模式
单例设计模式的实现流程
私有化构造方法,使用private关键字修饰。
声明本类类型的引用指向本类类型的对象,并使用private static关键字共同修饰。
提供公有的get方法负责将对象返回出去,并使用public static关键字共同修饰。

单例设计模式的实现方式
单例设计模式的实现方式有两种:饿汉式 和 懒汉式,在以后的开发中推荐饿汉式

2,继承
继承的概念
当多个类之间有相同的特征和行为时,可以将相同的内容提取出来组成一个公共类,让多个类吸收公共类中已有特征和行为而在多个类型只需要编写自己独有特征和行为的机制,叫做继承。
继承关系
在Java语言中使用extends(扩展)关键字来表示继承关系。

如:
public class Worker extends Person{} - 表示Worker类继承自Person类
其中Person类叫做超类、父类、基类。
其中Worker类叫做派生类、子类、孩子类。
子类对象创建原理
优点:使用继承提高了代码的复用性,可维护性及扩展性,是多态的前提条件。
弊端:增强了类与类之间的耦合性
原则: 高内聚低耦合

继承的特点
子类不能继承父类的构造方法和私有方法,但私有成员变量可以被继承只是不能直接访问。
无论使用何种方式构造子类的对象时都会自动调用父类的无参构造方法,来初始化从父类中继承的成员变量,相当于在构造方法的第一行增加代 码super()的效果。
使用继承必须满足逻辑关系:子类 is a 父类,也就是不能滥用继承。
Java语言中只支持单继承不支持多继承,也就是说一个子类只能有一个父类,但一个父类可以有多个子类,支持多层继承 比如: 我继承父亲 父亲继承爷爷

继承中成员变量的关系
1)父类中有和子类中同名的成员变量,子类对象使用的时候使用自己的;(就近原则)
2)父类中有,子类中没有,子类对象使用的父类的该成员变量

super 关键字
super 代表父类引用 。通过super调用父类的成员变量,调用父类的构造,调用父类的成员方法

3,访问控制访问修饰符
注意事项
public修饰的成员可以在任意位置使用。
private修饰的成员只能在本类内部使用。
通常情况下,成员方法都使用public关键字修饰,成员变量都使用private关键字修饰。

package语句的由来
定义类时需要指定类的名称,但如果仅仅将类名作为类的唯一标识,则不可避免的出现命名冲突的问题。这会给组件复用以及团队间的合作造成很大的麻烦!
在Java语言中,用包(package)的概念来解决命名冲突的问题。

包的定义
在定义一个类时,除了定义类的名称一般还要指定一个包名,格式如下:
package 包名;
package 包名1.包名2.包名3…包名n;
为了实现项目管理、解决命名冲突以及权限控制的效果。

定义包的规范
如果各个公司或开发组织的程序员都随心所欲的命名包名的话,仍然不能从根本上解决命名冲突的问题。因此,在指定包名的时候应该按照一定的规范。
org.apache.commons.lang.StringUtil
其中StringUtils是类名而org.apache.commons.lang是多层包名,其含义如下:org.apache表示公司或组织的信息(是这个公司(或组织)域名的反写);common 表示项目的名称信息;lang 表示模块的名称信息。

包的导入
使用import关键字导入包。
使用import关键字导入静态成员,从Java5.0开始支持。

4,final关键字
final本意为"最终的、不可改变的",可以修饰类、成员方法以及成员变量。

使用方式
final关键字修饰类体现在该类不能被继承。主要用于防止滥用继承
如:java.lang.String类等。
final关键字修饰成员方法体现在该方法不能被重写但可以被继承。主要用于防止不经意间造成重写
如:java.text.Dateformat类中format方法等。
final关键字修饰成员变量体现在该变量必须初始化且不能改变。主要用于防止不经意间造成改变
如:java.lang.Thread类中MAX_PRIORITY等。

常量的概念
在以后的开发中很少单独使用final关键字来修饰成员变量,通常使用public static final关键字共同修饰成员变量来表达常量的含义,常量的命名规范要求是所有字母都要大写,不同的单词之间采用下划线连。
如 public static final double PI = 3.14;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值