Java继承改进
一.java继承改进
首先,多继承的缺点:
1.继承多个父类,父类中方法名相同,产生歧义
2.父类中方法同名,子类未覆盖,也会歧义
所以,java改进,类只能单继承,接口可以多继承
接口中只有抽象方法和静态常量
1.抽象方法只能在实现接口类中实现,调用时调用实现类的方法
2.静态变量在编译期间将确定调用关系了,存在冲突也会在编译的时候提示错误
,而且引用变量一般直接使用类名或接口名,避免产生歧义。
1.1继承的初始化
继承关系是传递的。如,类C继承类B,类B继承类A,则类C既有从类B继承下来的变量和方法,也有从类A中继承下来的变量和方法,也可以有自己的变量和方法。继承下来的变量和方法尽管是隐式的,但仍是C的变量和方法。
构造方法是按照先超类后子类的方法进行的,所有超类会在子类访问它之前进行正确的初始化。
1.2super关键字
/*
super关键字
1.定义父类(Father)类
2.定义son类extends Father类
3.创建Son类对象
注意:
1.this和super很像,只能在有对象的前提下使用,不能在静态上下文使用
2.子类的构造函数默认第一行会调用父类无参数构造函数,隐式语句,super(),
如果父类无参数构造函数不存在,编译报错
3.构造函数间的调用智能放在第一行,只能调用一次。super()和this()不能同时存在构造函数第一行
题目
如果开发者自定义了一个类,没有显示的进行类的继承,那么该类中成员函数是否可以使用super关健健字?
答案:可以使用,继承了Object类,Object类是所有类的父类。 重载(overload)和重写(override)
重载:
前提:所有重载函数必须在同一个类中
特点:函数名相同,参数列表不同,其他无关(访问控制符,返回值类型)
重写:
前提:继承
特点:函数名相同,参数列表相同
子类的返回值类型要小于或等于父类的返回值类型
*/
class Super
{
public static void main(String[] args)
{
Son bigHead=new Son(11);
bigHead.run();
System.out.println("Hello World!");
}
} class Father
{
int x=1; Father()
{
System.out.println("这是父类无参数构造");
} Father(int x)
{
this.x=x;
System.out.println("这是父类有参数构造");
} void speak()
{
System.out.println("我是父亲");
}
} class Son extends Father
{
int y=0; Son()
{
System.out.println("这是子类无参数构造");
} Son(int y)
{
this.y=y+x;
System.out.println("这是子类有参构造函数");
} void run()
{
super.speak(); //访问父类的函数
System.out.println("我是儿子"+"今年"+y+"岁");
}
}
Java继承改进的更多相关文章
- 学习博客之Java继承多态接口
这一篇博客主要是对软工前一阶段学习的总结,主要是对Java的学习总结,包括三部分:Java的继承.多态和接口 Java的继承 继承是面向对象的三大特性之一,能够实现软件的复用. Java子类继承父类的 ...
- Java继承与组合
Java继承与组合 继承 java 中使用extends关键字表示继承关系,当创建一个类时,如果没有明确指出要继承的类,则是隐式地从根类Object进行继承. 子类继承父类的成员变量 子类能够继承父类 ...
- JAVA继承时构造函数的问题
今天看到java继承部分时,关于构造函数是否继承以及如何使用时遇到了点问题,后来查找相关资料解决了. 下面是我个人的总结: 先创建一个父类,里面有两个构造函数: public class Jisuan ...
- Java继承和接口
接口最关键的作用,也是使用接口最重要的一个原因:能上溯造型至多个基础类.使用接口的第二个原因与使用抽象基础类的原因是一样的:防止客户程序员制作这个类的一个对象,以及规定它仅仅是一个接口.这样便带来了一 ...
- Java继承的初始化
/** * Created by xfyou on 2016/11/2. * Java继承的初始化 */ public class Beetle extends Insect { int k = pr ...
- Java—继承、封装、抽象、多态
类.对象和包 1) 面向对象编程(Object Oriented Programming ,简称 OOP):20世纪70年代以后开始流行. 2) 结构化编程与面向对象编程的区别: A. 在结构化编程中 ...
- java继承关系中成员变量,构造方法,成员方法的关系
Java继承中的成员关系 A:成员变量 a:子类的成员变量名称和父类中的成员变量名称不一样,这个太简单写那个名字就访问那个名字! b:子类的成员变量名称和父类中的成员变量名称一样,这个怎么访问呢? 子 ...
- JAVA继承时this和super关键字
JAVA继承时this和super关键字 本文主要讨论在方法前使用this或super关键字时,编译器在什么地方查找对应的函数. 在子类中指定this关键字.首先在本类中查找,如果本类中找不到,再在父 ...
- JAVA 继承中的this和super
学习java时看了不少尚学堂马士兵的视频,还是挺喜欢马士兵的讲课步骤的,二话不说,先做实例,看到的结果才是最实际的,理论神马的全是浮云.只有在实际操作过程中体会理论,在实际操作过程中升华理论才是最关键 ...
随机推荐
- 开源一个windows消息队列查看器
windows消息简单易用,在异步消息发送场景的使用还是比较适合.为了方便查看队列中的消息和删除一些异常消息,开发了一个简单的小工具拿出来分享下. 源码地址:https://gitee.com/eab ...
- LAMP 1.4 PHP编译安装问题解决
环境:centos X64 最小化安装 php版本:php-5.4.3 安装前.先安装些软件和库文件 yum install -y gcc gcc-c++ make zlib zlib-devel p ...
- java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和联系
java.util.Date.java.sql.Date.java.sql.Time.java.sql.Timestamp区别和联系 栏目:Java基础 作者:admin 日期:2015-04-19 ...
- Tournament
题意: 有 $n$ 个 $K$ 维向量,若向量A只要有任意一维大于向量B,则认为A可能打败B,将n个向量一个一个加入,求问对于每次加完后的向量集合:有几个向量可能活到最后. 解法: 考虑如果A可以打败 ...
- mongodb教程国外
https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/
- JSP错误页面
exception是JSP九大内置对象之一,其实例代表其他页面的异常和错误.只有当页面是错误处理页面时,即isErroePage为 true时,该对象才可以使用.对于C项,errorPage的实质就是 ...
- HDU 5245 Joyful (期望)
题意:进行K次染色,每次染色会随机选取一个以(x1,y1),(x2,y2)为一组对角的子矩阵进行染色,求K次染色后染色面积的期望值(四舍五入). 析:我们可以先求出每个格子的期望,然后再加起来即可.我 ...
- 【OpenGL】Shader概述
目录(?)[-] 综述 编译一个Shader 链接一个Shader 删除一个Shader 指定使用一个Shader Program 删除一个Shader Program 备注 这篇文章讲述了Shade ...
- .net core 中的配置文件
前言 在 .NET Core 项目中,配置文件有着举足轻重的地位:与.NetFramework 不同的是,.NET Core 的配置文件都以 .json 结尾,这表示一个标准的 json 格式 ...
- [CentOS7] vncviewer与windows之间的复制粘贴
转载:https://my.oschina.net/seava/blog/226966 用VNC连接到Linux之后,最纠结的问题就是无法复制粘贴.其实很简单,在Linux里面,打开一个终端,然后输入 ...