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关键字实例化 ...
随机推荐
- mybatis使用order by注意
直接用动态参数生成,不会排序: <if test="orderColumn!=null and orderColumn != ''"> ORDER BY #{order ...
- JAVA异常使用_每个人都曾用过、但未必都用得好
一.抛出异常 vs. 返回错误代码 有人说“Well, an exception is a goto.”,但也有人言“makes the code simpler by visibly separat ...
- 重写QSqlTableModel的flags函数实现tableview中某些列不可编辑,某些可以编辑
Qt中使用QsqlTableModel和QTableView来显示数据库的查询结果是非常方便的,但是为了使QTableView中某些了列不可用,就需要重写 Qt::ItemFlags flags(co ...
- 京东UED招聘web前端开发工程师(中/高级)
工作职责: 负责前端界面的构建和各类交互设计与实现: 前端样式和脚本的模块设计及优化: 协同后台开发人员完成项目: 负责新产品开发线前端工作(新产品.垂直站.移动端 .后端系统),可根据个人喜好及特长 ...
- DedeCms 建站随笔(一)
站名:524社区网 代码:DedeCms织梦5.7代码(UTF-8) 服务器:Linux 问题一:火车头(熊猫)采集,登录成功之后无法获取栏目列表. 原因:1.新建栏目后没有更新栏目HTML文件,并且 ...
- WinCe 如何使应用程序只开启一个
方法一: namespace MyNameSpace{ static class Program { [DllImport("Toolhelp.dll")] public stat ...
- #pragma 预处理指令
Linux C 编程一站式学习 #pragma 预处理指示供编译器实现一些非标准的特性,C 标准没有规定 #pragma 后面应该写什么以及起什么作用,由编译器自己规定.有的编译器用 #pragma ...
- 用Total Commander替换windos默认资源管理器
用Total Commander替换windos默认资源管理器的方法 Total Commander(简称TC)是一个功能强大的资源管理器. TC本身没有自带的替换windows资源管理器的功能,就必 ...
- C Statements
1,while((ch = getchar()) != EOF){ putchar(ch);}2,while((ch=getchar()) != EOF){ if(ch < '0' ...
- ALLEN-XIE
ALLEN-XIE ABOUT Allen Xie是一家坚持理念至上的西装定制店.我们的价值观渗透于我们所做的每一件事中,从而确保始终遵循自己的风格.我们坚持用最高标准要求自己,因此,在制衣过程中 ...