四月二十日java基础知识
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基础知识的更多相关文章
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- Java基础知识系列——String
最近晚上没有什么事(主要是不加班有单身),就复习了一下Java的基础知识.我复习Java基础知识主要是依据Java API和The Java™ Tutorials. 今天是第一篇,复习了一下Strin ...
- 学习android学习必备的java基础知识--四大内部类
学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...
- JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)
本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...
- java基础知识梳理
java基础知识梳理 1 基本数据类型
- java基础知识回顾之---java String final类普通方法
辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /* * 按照面向对象的思想对字符串进行功能分类. * ...
- Java 基础知识(一)
Java基础知识篇: 一.关键字解释 1. final:修饰非抽象类,非抽象方法和属性, 以及修饰方法参数,代表“无法改变的”.出于对设计或者效率的考虑使用该关键字. final类无法被继承,fina ...
- java 基础知识三 java变量
java 基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...
- java 基础知识二 基本类型与运算符
java 基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...
随机推荐
- Echart 属性解析
<template> <div class="container"> <div id="myEchart" style=" ...
- k8s配置拉取镜像密钥
一.部署步骤 1.创建阿里云镜像仓库 2.创建Secret绑定镜像仓库账号 3.创建Deployment绑定Secret 二.创建阿里云镜像仓库 1.进入阿里云容器镜像服务,创建个人版实例 2.设置登 ...
- spark命令
spark提交任务命令 集群方式: ./bin/spark-submit --master spark://localhost:7077 --class 类 /home/cjj/testfile/f ...
- SpringBoot - Lombok使用详解4(@Data、@Value、@NonNull、@Cleanup)
六.Lombok 注解详解(4) 8,@Data (1)@Data 是一个复合注解,用在类上,使用后会生成:默认的无参构造函数.所有属性的 getter.所有非 final 属性的 setter 方法 ...
- requests模块获取cookie -----class 'requests.cookies.RequestsCookieJar'
#coding=utf-8 import requests url="http://www.baidu.com" response=requests.get(url) cookie ...
- LeetCode 之 108. 将有序数组转换为二叉搜索树
原题链接 思路: 二叉搜索树的定义: 它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的右子树不空,则右子树上所有结点的值均大于它的 ...
- 在虚拟机上安装CentOS6.5(minimal)
在虚拟机上安装CentOS6.5(minimal) 2017年04月04日 09:40:38 kongmd 阅读数:2171 1.安装CentOS6.5 1.首先下载VMware ,和CentOS ...
- 6.Vue路由
一.路由的基本概念与原理 路由是一个广义与抽象的概念,路由的本质就是对应关系 在开发中,路由分为: (1) 后端路由 (2) 前端路由 1.1 路由 1. 后端路由(根据不同的URL地址分发不同的资源 ...
- 2020.4.2关于java.pta的总结
0.前言 本文是有关pta2020.3至2020.4所有面向对象程序课程(java)共三次作业的阶段性总结,是java学习最开始起步时期的成果. 1.作业过程总结 这三次作业,是从c++过渡到java ...
- python之tk学习,闲鱼搜索-小记
(如想转载,请联系博主或贴上本博地址) 编程,逻辑,总是让人如痴如醉. 下面进入正题. 火热的天气配上火热的python,python的入门友好性让门外汉们都看到了希望.当然自己写的程序如果没有GUI ...