Java基础15-final、static关键字和Object类

一、final关键字

1.什么是final关键字

继承的出现提高了代码的复用性,并方便开发。但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写。可是当子类继承了这些特殊类之后,就可以对其中的方法进行重写,那怎么解决呢?

要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变。final是个修饰符,它可以用来修饰类,类的成员,以及局部变量。

2.final的特点

①修饰类不可以被继承,但可以继承其他类

②final修饰的方法不可以被覆盖,但父类中没有被final修饰方法,子类覆盖后可以加final。

③修饰的变量称为常量,这些变量只能赋值一次。

④引用类型的变量值为对象地址值,地址值不能更改,但是地址内的对象属性值可以修改。

⑤ 修饰成员变量,需要在创建对象前赋值,否则报错。(当没有显式赋值时,多个构造方法的均需要为其赋值。)

二、static关键字

1.什么是static

当在定义类的时候,类中都会有相应的属性和方法。而属性和方法都是通过创建本类对象调用的。当在调用对象的某个方法时,这个方法没有访问到对象的特有数据时,方法创建这个对象有些多余。可是不创建对象,方法又调用不了,这时就会想,那么我们能不能不创建对象,就可以调用方法呢?

以上问题就可以通过static关键字来实现。static它是静态修饰符,一般用来修饰类中的成员。

2.static的特点

①被static修饰的成员变量属于类,不属于这个类的某个对象。

②被static修饰的成员可以并且建议通过类名直接访问。

访问静态成员的格式:

类名.静态成员变量名

类名.静态成员方法名(参数)

注意:

静态内容是优先于对象存在,只能访问静态,不能使用this/super。静态修饰的内容存于静态区。

同一个类中,静态成员只能访问静态成员

这是因为,static修饰的方法和变量,属于类,先进方法区,非静态的变量在他们进方法区时还没有产生。

main方法为静态方法仅仅为程序执行入口,它不属于任何一个对象,可以定义在任意类中。

3.静态常量

上边我们知道,final修饰的变量是常量

那final和static共同修饰的就是静态常量了

定义格式:

public static final 数据类型 变量名 = 值;

当我们想使用类的静态成员时,不需要创建对象,直接使用类名来访问即可。

注意:

接口中的每个成员变量都默认使用public static final修饰。

所有接口中的成员变量已是静态常量,由于接口没有构造方法,所以必须显示赋值。可以直接用接口名访问。

interface Inter {
    public static final int COUNT = 100;
}

三、Object类

Object是java中所有类的根类,是祖宗级的。

1.Object为什么是所有类的根类,到底什么是Object类?

* object本身指对象的意思。我们发现所有的对象都具有某一些共同的行为,所以,我们抽象出一个类object对象类,其他都会继承于object类,也拥有object类中的方法

* 引用数据类型:类/接口/数组,引用类型又称为对象类,所谓数组的数组变量名称,应该指数组对象。

2.Object类常见方法

* 1.protected void finalize():垃圾回收器再回首某一个对象之前,会调用该方法,做扫尾操作,该方法我们不要去调用
* 2.getclass(),返回当前对象的真实类型。在反射中用的多。
* 3.hashcode(),返回对象的哈希码值,hashcode决定了对象在哈希表中的存储位置。不同对象的hashcode是不一样的

* 4.equals(),拿当前对象(this)和参数obj作比较,

* 在object类中的equals方法,本身和==符号相同,都是比较对象的内存地址

* 官方建议:每个类都应该覆盖equals方法,不要比较内存地址,而失去比较我们关心的数据

* 5.toString():把一个对象转换为字符串。
* 默认情况下打印对象,打印的是对象的十六进制的hashCode值

* 官方建议我们:应该每个类都应该覆盖toString返回我们关心的数据

原文地址:https://www.cnblogs.com/LuckyGJX/p/8974145.html

时间: 2024-10-10 16:57:25

Java基础15-final、static关键字和Object类的相关文章

java基础学习总结——static关键字

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——static关键字 一.static关键字 原来一个类里面的成员变量,每new一个对象,这个对象就有一份自己的成员变量,因为这些成员变量都不是静态成员变量.对于static成员变量来说,这个成员变量只有一份,而且这一份是这个类所有的对象共享. 1.1.静态成员变量与非静态成员变量的区别 以下面的例子为例说明 1 package cn.galc.test; 2 3 public class Cat { 4 5

Java基础语法 - 面向对象 - static 关键字

使用static关键字修饰的变量.常量和方法分别被称作静态变量.静态常量和静态方法,也被称作类的静态成员 静态变量 使用static修饰过的类变量称为静态变量 该变量需要使用类名.变量名进行调用,不能使用对象名/this进行调用 在类方法中不能定义与静态变量同名的局部变量 1 package mingri.chapter_6; 2 3 public class Pool { 4 5 public static int water = 0; // 定义一个静态变量 6 7 public void

java基础---17. 静态static关键字

1 static关键字概述 2 静态static关键字修饰成员变量 2.1 定义一个学生类 public class Student { private String name; private int age; static String room; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { r

java基础之final关键字

与final关键字相关的笔试题面试题也是一道必考题.而且对于final的实际应用非常广泛,在代码设计的时候,如果对此不够足够掌握,可能就会很难排查与此相关的异常. final的理论知识如下: final类型的成员变量初始化值: 1.声明时候直接赋值 2.构造方法中赋值,如果一个类中有多个构造方法,就要保证在每个构造方法中都要完成对final类型变量的初始化工作 3.静态final成员变量必须在声明时赋值,且不能在构造方法中赋值 4.final成员变量指的是引用不能改变,即该变量的引用不能在指向其

Java 基础:认识&理解关键字 native 实战篇

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 泥瓦匠初次遇见 navicat 是在 java.lang.Object 源码中的一个hashCode方法: 1 public native int hashCode(); 为什么有个navicat呢?这是我所要学习的地方.所以今天泥瓦匠想要总结下navicat. 一.认识 native 即 JNI,Java Native Interface 凡是一种语言,都希望是纯.比如解决某一个方案都喜欢就单单这

java基础知识回顾之关键字

其实java中的常用关键字并不多,总共加起来也没有多少个,具体见如下这张表: private,protect,public 在java中,在类,类的属性和累的方法前面加上一个修饰符来对其进行访问权限上的控制.除了使用private,protect,public之外, 还有一种是default情况,即使不加任何权限修饰符.关于这四中情况的权限差别见下表: 注意:default不是修饰符,他表示一种不加任何修饰符的情况. 这里,主要看一看static,instanceof,final关键字的含义和如

Java基础15:深入剖析Java枚举类

Java基础15:深入剖析Java枚举类 枚举(enum)类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示. 初探枚举类 在程序设计中,有时会用到由若干个有限数据元素组成的集合,如一周内的星期一到星期日七个数据元素组成的集合,由三种颜色红.黄.绿组成的集合,一个工作班组内十个职工组成的集合等等,程序中某个变量取值仅限于集合中的元素.此时,可将这些数据集合定义为枚举类型. 因此,枚举类型是某类数据可能取值的集合,如一周内星期可能取值的

java基础面向对象之this关键字

java基础面向对象之this关键字 2017-02-14 this的核心概念: this关键字在java中表示当前对象. this关键字的主要用法: 在java中利用this关键字可以实现类属性的调用,类方法的调用,当前对象. 一.调用属性 1 class Book{ //Book类 2 private String title ; //title属性 3 private int price ; //price属性 4 5 public Book(String t , int p){ 6 ti

Java中this和static关键字及代码块

this: 可以使用this表示类中的属性------this.name=name 可以使用this强调调用的是本类的方法 可以使用this调用本类的构造方法------this();调用本类中无参构造方法 可以使用this表示当前对象(调用方法的对象)----最重要的用途 static: 声明属性---------属性则为全局变量 声明方法---------Person.setName("Tom");使用类名称调用static方法 普通代码块:直接在方法或是语句中定义的代码块 pub