1.不可被继承的成员与最终类:
在默认情况下,所有的成员变量和成员方法都可以被覆盖,如果父类的成员不希望被
子类的成员锁覆盖可以将它们声明为final。如果用final来修饰成员变量,则说明该成员变量
是最终变量,即常量,程序中的其他部分都可以访问,但不能修改。如果用final修饰成员方法
,则该成员方法不能被子类覆盖,即该方法为最终方法。对于一些比较重要且不希望被子类
重写的方法,可以使用final修饰符对成员方法进行修饰,这样可以增加代码的安全性
2.注意:所有被private修饰符限定为私有的方法,以及所有包含在final类中的方法,都被
默认为final的。这些方法既不能被子类继承,也不可能被覆盖,所以他们自然就是最终的方法
3.定义在类中的final成员变量和定义在方法中的final局部变量一旦给定,就不能更改
大体上说,final成员变量和final局部变量都是只读量,他们能且只能被赋值一次,而不能被
赋值多次
4.一个成员变量若被static final 两个修饰符所限定时,它实际的含义就是常量,所以在
程序中通常用static和final一起来指定一个常量,且这样的常量只能在定义时赋值
5.定义一个成员变量时,若只用final修饰而不能用static修饰,则必须且只能赋值一次
,不能默认。这种成员变量的赋值方式只有两种:一种是定义变量时赋初值;另一种是在某一个
构造方法中进行赋值
6.Object类常用的方法:
1.public boolean equals(Object obj):判断两个对象变量所指向的是否为同一个对象
2.public String toString () :将调用toString()方法的对象转换成字符串
3.public final Class getClass() :返回运行时对象所属的类
4.protected Object clone() :返回调用该方法的对象的一个副本
7.对字符串变量来说,使用“==”运算符和equals()方法来比较字符串时,其比较方式是
不同的。“==”运算符用于比较两个变量本身的值,即两个对象在内存中的首地址,而
equals()方法则是比较两个字符串中所包含的内容是否相等;而对于非字符类型的变量来说,
“==”运算符和equals()方法都用来比较其所指对象在堆内存中的首地址,换句话说,“==”
运算符和equals()方法都是用来比较两个类类型的变量是否指向同一个对象;另外,对于s3和
s4这两个由字符串常量所生成的变量,其中所存放的内存地址是相同的。
8.toString方法:将调用该方法的对象的内容转换成字符串,并返回其内容,但返回的是一些
毫无意义且看不懂的字符串。因此,如果要用toString()方法返回对象的内容,可以重新定义
该方法以覆盖父类的同名方法满足需求
9.getClass方法:功能是返回运行时的对象所属的类
10.对象运算符:instanceof
instanceof运算符测试一个指定对象是否是指定类或它的子类的实例,若是返回true,不是
返回false
11.getName()方法返回一个类的名称
getSubclass()方法获得父类
12.抽象类:在java语言中还可以创建专门的类作父类,这种类被称为抽象类(abstract class)
.抽象类的作用:有点类似“模板”,其目的是根据它的格式来创建和修改新的类
但是不能 直接由抽象类创建对象,只能 通过抽象类派生出新的子类,再由其子类来创建对象。
也就是说,抽象类是不能用new运算符来创建实例对象的类,它可以作为父类被它的所有子类
所共享 。
13.抽象类与抽象方法:
抽象类是以修饰符abstract修饰的类。抽象类的语法格式:
abstract class 类名{
声明成员变量;
返回值的数据类型 方法名 (参数表);
{
...}
abstract 返回值的数据类型 方法名(参数表);}----抽象方法。在抽象方法里,不能定义方法体
}
14.说明:在抽象类中的方法分为两种:一种是以前介绍的带有方法体的一般方法,另一种是
没有方法体的 “抽象方法”,它是abstract关键字开头的方法,此方法只能声明返回值的
数据类型、方法名称与所需要的参数,但没有方法体。也是说,对抽象方法只需要,而不需要
实现,即用“;”结尾,而不用“{}”结尾。当一种方法声明为抽象方法时,意味着这种方法
必须被子类的方法所覆盖,否则子类依然是抽象的。抽象方法声明中修饰符static和abstract
不能同时使用
15.抽象类的子类必须实现父类中的所有抽象方法,或者将自己也声明为抽象的
16.注意:1)由于抽象类是需要被继承,所以抽象类不能用final来修饰。也就是说,一个类
不能既是最终类又是抽象类,即关键字abstract与final不能合用
2)abstract不能与private、static、final或native并列修饰同一种方法
17.抽象类中不一定包含抽象方法,但包含抽象方法的类一定要声明为抽象类。
抽象类本身不具备 实际的功能,只能用于派生其子类,而声明为抽象方法必须必须在子类派生
时被覆盖。所以说一个类被定义为抽象类,则该类就不能用new运算符创建具体实例创建具体
实例对象,而必须通过覆盖的方式实现抽象类中的方法。
18.抽象类可以有构造方法,且构造方法可以被子类的构造方法调用,但构造方法不能被声明为
抽象的。由于不能用于抽象类

总结:今天学习了不可继承类,防止被子类覆盖

学习了object的getName方法返回类名,getClass返回类名,instanceof运算符判断类

抽象类子类不能实现实际功能,由子类实现。可以有构造方法,且被子类构造方法调用,但构造方法不能被声明抽象

四月二十日java基础知识的更多相关文章

  1. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  2. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  3. Java基础知识系列——String

    最近晚上没有什么事(主要是不加班有单身),就复习了一下Java的基础知识.我复习Java基础知识主要是依据Java API和The Java™ Tutorials. 今天是第一篇,复习了一下Strin ...

  4. 学习android学习必备的java基础知识--四大内部类

    学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...

  5. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  6. java基础知识梳理

    java基础知识梳理 1 基本数据类型

  7. java基础知识回顾之---java String final类普通方法

    辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      ...

  8. Java 基础知识(一)

    Java基础知识篇: 一.关键字解释 1. final:修饰非抽象类,非抽象方法和属性, 以及修饰方法参数,代表“无法改变的”.出于对设计或者效率的考虑使用该关键字. final类无法被继承,fina ...

  9. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

  10. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

随机推荐

  1. Python使用双层列表推导式输出九九乘法表

    print('\n'.join([' '.join(['%2d *%2d = %2d' % (col, row, col * row) for col in range(1, row + 1)]) f ...

  2. 洛谷 P2330 [SCOI2005]繁忙的都市 题解

    START: 2021-08-05 15:30:20 题目链接: https://www.luogu.com.cn/problem/P2330 题目详情: 城市C是一个非常繁忙的大都市,城市中的道路十 ...

  3. Django 基础(二)

    cookie和session from django.shortcuts import render from django.http import HttpResponse # Create you ...

  4. CentOS 7(Linux)安装Docker

    CentOS 7(Linux)安装Docker 一.分别执行下列命令添加并更新yum源 yum update yum install epel-release -y yum clean all yum ...

  5. (十三).CSS3中的变换(transform),过渡(transition),动画(animation)

    1 变换 transform 1.1 变换相关 CSS 属性 CSS 属性名 含义 值 transform 设置变换方式 transform-origin 设置变换的原点 使用关键字或坐标设置位置 t ...

  6. Linux应用开发之【多线程开发-回调函数】

    原来我一直都不懂回调函数是什么 ... Callback Function 定义:通过函数指针调用的函数 在理解这个回调函数之前我们需要先了解回调机制 回调机制在编程中体现在:特定的情况发生后,返回并 ...

  7. 本地项目导入svn托管

  8. JS判断数据类型的4种方法

    4种判断方法分别是: typeof instanceof prototype属性 constructor属性 可判断的类型对比如下图: 实践代码如下: 1 // 构造函数名方法 2 function ...

  9. Ubuntu 20.04 使用deb包安装mysql

    Ubuntu 20.04 使用deb包安装mysql 1.环境 WSL2 + Ubuntu 20.04 2.下载mysql的Ubuntu / Debian安装包 MySQL :: Download M ...

  10. CanvasScaler的三种适配模式——缩放模式(Scale with Screen Size)

    一.含义 根据屏幕尺寸进行缩放,随着屏幕尺寸进行放大缩小 二.参数介绍 第一个参数一般是美术人员根据游戏主要面向的手机市场,比如安卓市场,用市场上最常用的分辨率作为制作UI图片的标准.这里填的数就是美 ...