J2SE知识点摘记(三)
1、 在java只允许单继承,而不允许多重继承,也就是说一个子类只能有一个父类.但在java中却允许多层继承.
2、 非内部Class只能被public或者default修饰.
3、 子类构造过程中必须调用父类的构造函数.
4、 实际上子类对象创建后含有一个父类对象,有this去引用自身,super去引用父类.
5、 子类对象在实例化时会默认先去调用父类中的无参构造方法,之后再在调用本类中的相应构造方法.但是,实际上子类并没有继承父类中的构造函数(构造函数名和函数名一样),只是子类在实例化对象时先自动调用父类的构造函数”super.”,再调用自己的构造函数”this.”.(super必须先写)
6、 补充: 如果父类base class只有缺省构造函数,也就是编译器自动为你产生的.而子类中也只有缺省构造函数,那么不会产生任何问题,因为当你试图产生一个子类的实例时,首先要执行子类的构造函数,但是由于子类继承父类,所以子类的缺省构造函数自动调用父类的缺省构造函数.先产生父类的实例,然后再产生子类的实例.
7、 结论:子类如果有多个构造函数的时候,父类要么没有构造函数,让编译器自动产产生,那么在执行子类构造函数之前先执行编译器自动产生的父类的缺省构造函数;要么至少要有一个显式的缺省构造函数可以让子类的构造函数调用.
8、 final关键字 对象用final标记后,表示该对象不能再重新实例化
9、 构造方法的私有
构造方法虽然被私有了,但并不一定说此类不能产生实例化对象,只是产生这个实例化对象的位置有所改变,即只能在本类中中产生实例化对象.例子:private static final Person p=new Person();//封装在在Person类中,可以在main()方法直接使用"Person p;"来声明,此时,p会被自己Peron类实例化,对比main()方法使用"Person p=new Perosn;".
10、 super关键字主要的功能是完成子类调用父类中的内容,也就是调用父类中的属性或方法.例子:super("张三",25);//用super调用父类中的构造方法,只能放在程序的第一行.super关键字不仅可用于调用父类中的构造方法,也可以调用父类中的属性或方法,例如:super.父类中的属性;super.父类中的方法;
11、 限制子类的访问
父类不希望子类可以访问自己的类中的全的属性或方法,所以需要要将一些属性与方法隐藏起来,不让子类去使用.为此可在声明属性或方法时加上private关键字,表示私有.
12、 覆写
所谓"重载",即是方法相同,但却可在不同的场合做不同的事.当一个子类继承一个父类,而子类中的方法与父类的名称,参数个数,类型等都完全一致时,就称子类中的这个方法覆写了父类中的方法.同理,如果子类中重复定义了父类已有的属性,则称子类中的属性覆写了父类中的属性.注意:在子类中可以通过super.方法()调用父类中被子类覆写的方法.
13、 This关键字
this.属性、this.方法(),实际上都表示当前的对象中的属性或当前对象调用的方法.
this的核心:表示当前对象,当前正在操作本方法的对象称为当前对象.
使用this可以调用其他构造方法,但是此语句必须放在构造方法的首行.
J2SE知识点摘记(三)的更多相关文章
- J2SE知识点摘记-数据库(二)
一. 查询数据 注意sql的内容. 通过ResultSet接口保存全部的查询结果,通过Statement接口中的executeQuery()方法查询.查询之后需要分别取出.通过nex ...
- J2SE知识点摘记-数据库(一)
一. 数据库连接 在JDBC的操作过程中,进行数据库连接的主要步骤如下: 通过Class.forName()加载数据库的驱动程序.首先需要利用来自Class类中的静态方法forNam ...
- J2SE知识点摘记(二十二)
Map 1.4.1 概述 数学中的映射关系在Java中就是通过Map来实现的.它表示,里面存储的元素是一个对(pair),我们通过一个对象,可以在这个映射关系中找到另外一个和这个对象相关 ...
- J2SE知识点摘记(十八)
Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念: 1) Collection . 一组对立的元素,通常这些元素都服从某种规则.List必须保持元素特定的顺序,而Set 不能有重复 ...
- J2SE知识点摘记(十)
1. 多线程的同步 2. 同步代码块 即程序中不能有多个线程同时在这两句代码之间执行.(必须两句代码执行完,其他线程才可以公用执行) 同步代码块定义语法如下 ... syn ...
- J2SE知识点摘记(六)
1. static关键字的使用 static 关键字:可以用于修饰属性,也可以用于修饰方法,还可以用于修饰类. static 修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯 ...
- J2SE知识点摘记(五)
1. 引用数据类型的传递 java用引用代替C++中的指针 fun()方法接收的参数是是Change c1,也就是说说fun()方法接受的是一个对象的引用,所以fun方法中所所做的操作就 ...
- J2SE知识点摘记(四)
1. 抽象类(abstract) 抽象类和抽象方法都必须用abstract关键字来修饰. 抽象类不能被直接实例化,也就是不能直接用new关键字去产生对象. 抽象方法只需声明,而不需实现. ...
- J2SE知识点摘记(二)
1. 对象的声明 "类名 对象名 = new 类名();"例子:Person P;//先声明一个Person类的对象p p=new Person();//用new关键字实例化 ...
随机推荐
- ckeditor的使用与验证
1.使id=id的textArea变为富文本编辑框 function inittextarea(id) { CKEDITOR.replace(id,{ width:'600px', ...
- 详解如何在linuxmint上用源码包安装nodejs
第一步:安装依赖包 因为Linuxmint 和 Ubuntu 同属 Debian系的Linux,而且Linuxmint是建立在Ubuntu的基础上的,所以Ubuntu下的命令和包,Linuxmin ...
- 使用bootstrap时,选项框出现的意外效果,怎么办?
<label for="" style="float:right;margin-right:10%;"> <input type=&q ...
- 打造阅读Linux源代码利器
打造阅读Linux源代码利器 在Linux里阅读/编写代码一般用vi 但是碰到较大的项目时阅读源代码还是比较费力,一直用find 和 grep命令. 其实,我们自己可以打造一个阅读源代码的vim,这 ...
- MYSQL 查看表定义的 4 种方法
方法 1. show create table table_name;可以用这个看表的代码. show create table Strings; 方法 2. show full columns fr ...
- 利用Azure Automation实现云端自动化运维(2)
Azure automation的认证: 用户名和密码 在Azure的automation中使用Powershell可以管理当前订阅的资源,也可以管理不同订阅的资源,那么问题就来了,安全性如何 ...
- struts2配置文件struts.xml的简介
本文在于总结,深入研究有别人写的很好了,也没必要再去写,将在本文后面附上他们的文章地址: 一.struts2的执行过程: 二.struts2的配置文件struts.xml 下面是其三大部分includ ...
- (Inno setup打包)检测系统是否已安装程序,若已安装则弹出卸载提示的代码
原文 http://bbs.itiankong.com/thread-30983-1-5.html 有6天没研究pascal代码了,昨天晚上突然来了灵感,终于解决了苦思冥想好几天没能解决的问题, 因此 ...
- 北京西服定做_衬衫定制_关于我们_Dimoon TLR.
北京西服定做_衬衫定制_关于我们_Dimoon TLR.
- hdu 1300 Pearls(dp)
Pearls Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...