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关键字实例化 ...
随机推荐
- 基本语法 - PHP手册笔记
PHP标记 如果文件内容是纯PHP代码,最好在文件末尾删除PHP结束标记.这可以避免在PHP结束标记之后万一意外加入了空格或者换行符,会导致PHP开始输出这些空白,而脚本中此时并无输出的意图.当然PH ...
- js 获取浏览器内核
<script language="JavaScript" type="text/javascript"> var browser = { ...
- WPF 接收exe传的值
原文:WPF 接收exe传的值 一,首先重载APP protected override void OnStartup(StartupEventArgs e) { ...
- Linux中Samba详细安装
为了实现Windows主机与Linux服务器之间的资源共享,Linux操作系统提供了Samba服务,Samba服务为两种不同的操作系统架起了一座桥梁,使Linux系统和Windows系统之间能够实现互 ...
- linux之SQL语句简明教程
本教程参考http://www.1keydata.com/cn/sql/ 目的是让初学者了解linux下Mysql的操作,但是我仍想侧重于SQL语句的讲解 sql语句的学习将按照下图的流程: 当然在这 ...
- javacript 面向对象
1.对象 使用Object创建对象 var p = new Object(); p.name = 'jason'; p.sayName = function(){ alert(this.name); ...
- js算法
最近面试可能会问这些 1,插入排序 function sort(elements){ var res =[elements[0]]; for (var i = 0; i < elements.l ...
- linux使用FIO测试磁盘的iops
FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, ...
- C# 3.0 { get; set; } 默认值
.NET Framework 3.5 使用的是 C# 3.0,C# 3.0 有一些新的语言特性,其中有一项就是快捷属性. 之前的写法: private int _id = 0;public int I ...
- 【泛化物品】【HDU1712】【ACboy needs your help】
ACboy needs your help Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...