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. layui 点击显示与点击隐藏

    主要有lay-filter属性,靠这个属性监听 <div class="layui-col-xs12 layui-col-sm4 layui-col-md4"> < ...

  2. Python 爬虫代码应该怎么写?

    对于入行已久的老程序员也并不一定精通爬虫代码,这些需要时间的沉淀还需要更多的实战案例,简单的问句你真的会写爬虫么?下面就是我日常写的一个y文件加上几个请求并且把需要的功能全部实现模块化,可以让我们爬虫 ...

  3. Ubuntu常用命令(二)

    clash 启动 #.clash -d . sudo /home/lizhenyun/clash/clash -d /home/lizhenyun/clash/ deb包安装 sudo dpkg -i ...

  4. STM32F103使用FSMC对接正点原子3.5寸TFTLCD屏幕

    fsmc的使用算是32里面有点绕的一个知识点,但是想明白了其实也没啥了. 首先我先放32个0在这儿: 0000  0000  0000  0000  0000  0000  0000  0000 [3 ...

  5. Delphi 关于RichEdit URL 颜色相关总结

    一.代码改变字体大小和颜色 1 procedure TForm1.Button1Click(Sender: TObject); 2 var 3 sNickName, sstr: string; 4 b ...

  6. 线上Java调优-Arthas入门

    1.SSH连接目标主机,找到对应容器ID docker ps | grep eam 2.进入容器,并启用bash docker exec -it 01c6ab243ff4 /bin/bash 3.按A ...

  7. 微信小程序 图片预览 wx.previewImage

    官网地址: go官网 效果展示: list: [ 'http://img5.imgtn.bdimg.com/it/u=3300305952,1328708913&fm=26&gp=0. ...

  8. Python subnet 操作物件

    subnetcalc.py class SubnetCalc(object): def __init__(self, network, mask): self.network = network.sp ...

  9. CBV源码分析及模板语法之传值 过滤器 标签 继承 导入

    CBV的源码分析 # CBV的源码入口从哪里看呢? CBV的核心源码: return self.dispatch(request, *args, **kwargs) def dispatch(self ...

  10. C#实现控制台打印年历

    C#实现控制台打印年历 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System. ...