问题一:子类和父类的继承关系(extends)

需要强调的是,子类自动声明继承父类中的public和protected的成员

其中,public成员,外界可以自由访问;

private成员,外界无法进行访问;

protected成员,在同一个包中的子类,或者继承于同一个父类的子类之间可以访问;

对于较为特殊的default成员,如果不指明默认权限,则默认同一个包中的类可以进行访问;

如图所示,存在三个类,分别为爷爷类、父类和子类,分别都有一个相应的方法,输出结果如下:

可以得出以下结论:

1、在调用子类的方法时,会先调用其父类的成员方法;

2、在调用子类方法时,在调用父类方法时,会优先来到无参父类的方法里面,调用无参父类的方法;

还需要强调的一点是,在子类里面调用父类方法时,一般会使用super();来替代,但是,只能放在子类实现语句的前面,否则就会报错!



问题二:为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?

其实,我们知道构造函数的主要作用是在类的对象创建时定义初始化的状态,在子类中调用父类来的成员方法时,如果不先进行初始化,那么对于从父类来的对象无法得到正确的初始化,故而反过来运行会导致程序报错!记得一定要先进行初始化奥!

问题三:不允许继承的类-final

final嘛,本身就是最后的意思,就是只允许读,不允许写的;

以final声明的方法不允许覆盖、不允许更改;

也可以将它称作“不可变的类”,属性不可改,并且也不会衍生出新的子类

举例:

这样的变量是不允许更改的

问题四:探索一下--调用仅仅初始化的类,会输出什么

原来它在没有定义任何成员的情况下,调用并输出该类的话,输出的是该类所在的地址

探索一下--查看println语句调用了些啥

利用反汇编,找打了JDK源码,发现这个:

println语句调用了String类里面的valueOf()方法,然后valueOf()方法又调用了Object.toString()方法,从而输出的是地址

问题六:子类和父类的方法名的解释

1、子类与父类方法名完全不同时,为“扩充”;

2、子类与父类方法名完全相同时,为“覆盖\重写”;

3、子类与父类的方法名称相同,但是参数类型或者个数不同时,为“重载”;

目前来说,并不建议将子类方法名和父类方法名设置为“覆盖”,会引起一些不必要的麻烦

Object是类的顶级基层,所有的类都是来自于Object的继承

问题七:“+”号的神奇

举例:

由此可知,+可以用于连接字符串

问题八:方法覆盖



由此可知,当父类和子类的方法是覆盖时,用的是子类的方法

举例:当子类和父类运用了同样一个方法时,

问题九:父类变量可以直接引用子类对象

并且,还是之前提到的Object变量,因为他是顶层基类,所以每个对象都可以赋值给Object变量

问题十:子类对象与基类对象之间的赋值

1、子类变量可以直接赋值给基类变量;

2、基类变量如果想要赋值给子类变量的话,需要进行强制类型转换

子类对象变量=(子类名)基类对象名

问题十一:使用instanceof运算符判断是否可以实现转换

问题十二:根据知识存储判断

我个人对于这些语句的判断结果是这样的:

我认为第二句和第四句会出错

结果是这样的:

第二句报错

第四句报错

其他正常:

问题十三:对“变态”类的理解

结果:100、200、200、200、201

1、初始化父类:调用的是父类的方法--100

2、初始化子类:调用的是子类的方法--200

3、父类对象直接调用子类:调用的是子类的方法--200

4、目前已经令父类对象调用子类,++是后置--200

5、将父类强制转换为子类,再++--201

调用子类,会优先访问子类中与父类同名的方法,如果想要访问父类,需要在前面加上super()方法

问题十四:对“滞后绑定”的探索

每个类里面都有相应的public属性的value值,类与类之间存在继承关系,每次调用时,会调用到该子类的方法,但调用不到该子类的value值,即为“滞后探索”;

问题十五:多态生成的原因以及好处

为了减少代码的修改,使得繁琐的代码更加简洁,使修改代码变得更加方便

频繁修改代码:

修改较为麻烦,不符合实际情况

举例:动物园

多态编程分为继承多态接口多态

上述程序是继承多态的实现,接口多态的实现如下:

问题十六:抽象和接口

加上adstract之后,就变成了抽象方法,只有在它的继承子类中定义了其未实现的方法之后,在能使用new创建新的对象;

在抽象方法里面,只有方法名,没有方法体

一个抽象类中可以包含非抽象方法和成员变量。包含抽象方法的类一定是抽象类,但抽象类中的方法不一定是抽象方法

抽象类包括三种:

1、直接定义了一个抽象方法

2、继承了一个抽象父类,但没有完全实现父类中的抽象方法

3、实现了一个接口,但没有完全实现该接口所包含的抽象方法

抽象类不能创建对象,一般用它来引用子类对象

模板::抽象类 抽象类变量 = new 派生自抽象类的具体子类();

利用接口抽象对象的行为特性

接口的使用::接口类型 接口类型的变量=new 实现了接口的具体类型()

接口的扩充:使用继承(extends)实现接口的扩充

实现子接口的类,必须实现“父”“子”接口所定义的所有方法,才能被实例化(new出一个新的对象)

接口和抽象类的区别

对于Java课上问题的探究和解答的更多相关文章

  1. Java 课上的语录

    Java 课上的语录 在用系统类库的类的时候啊,你是不是充分的理解这个系统类库的类.比如这个 ArrayList 你是不是知道它里面有这样那样这样那样的函数,能够帮你做各种各样的事情.很重要,你不知道 ...

  2. 第一次 在Java课上的编程

    第一次在java课上的编程(使用参数输入求和): 代码: public class He {    public static void main(String[] args)    {       ...

  3. 关于转入软件工程专业后第二次java课上作业的某些体会

    今天是第二周的java课. 自从转入了软件工程专业后,在我没有学习c++的基础上,直接开始了学习java的过程.不得不说过程很艰辛.今天下午老师让编写一个随机产生作业的软件.而我的基础差到都不知道如何 ...

  4. java课上测试心得

    放暑假之前,建民老师就给我们布置了每一天学习两小时的代码,但是自己的不重视,根本就没有达到这个要求,简单学了一点点基本的东西,然后在开学的第一堂课上,连续三个小时的敲代码,让我意识到了自己的问题,一个 ...

  5. 20175316盛茂淞 2018-2019-2 《Java程序设计》第2周课上测试总结

    20175316 2018-2019-2 <Java程序设计>第2周课上测试总结 上周考试题目总结 题目1 题目要求: 在Ubuntu中用自己的有位学号建一个文件,教材p29 Exampl ...

  6. 20155205 《Java程序设计》0510课上实践博客

    20155205 <Java程序设计>0510课上实践博客 一.教材代码检查-p98 未提交成功原因: 一开始在iterm中运行,但是结果出错,没有时间提交了.这个提交其实很简单,没有提交 ...

  7. 20165305 苏振龙《Java程序设计》第八周课上测试补做

    1. 下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入world.sql,提交导入成功截图 2. ...

  8. 20165305 苏振龙《Java程序设计》第四周课上测试补做

    第一次测试 第二次测试 第三次测试 上传代码 第四次测试 总结 之前我一直在git bash进行程序设计,但是对于我来说操作起来有点困难,所以我改用了虚拟机,之后之前一直困扰我的问题在虚拟机下就没有了 ...

  9. Java实验--关于课上找“水王”问题分析

    问题的表述就是说有那么一个人,他在一个论坛上发帖,然后每贴必回,自己也发帖.那么这个人在发帖的数目上就超过了整个论坛的帖子数目的一半以上. 我对这个问题一开始的思路是,用SQL语句获取整个列表中的数据 ...

  10. JAVA课设个人博客--多源数据教学管理系统

    JAVA课设个人博客--多源数据教学管理系统 1.团队课程设计博客链接 https://www.cnblogs.com/hq9-/p/10278470.html 2. 个人负责模块或任务说明 主要模块 ...

随机推荐

  1. 手写JS深拷贝

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Linux基础第八章:操作系统引导过程、运行级别及开机问题处理

    一.操作系统引导过程 1.开机自检(bios) 2.MBR引导 3.grub菜单 4.加载内核(kernel) 5.init进程初始化 二.操作系统运行级别(init0-init6) 1.init 0 ...

  3. Unity算法之A星- A*Pathfind Project插件的使用

    先上效果图 首先上  插件地址  (如果没有积分可以评论区联系我) 1.下载完毕后导入unity 导入后可以在Component里面看到多了一个Pathfinding选项 2.场景搭建 首先新建两个层 ...

  4. 做好ssh远程访问安全

    传统都是这样的: 1. 只允许跳板机登录2. 跳板机要用 vpn 登录 修改默认端口+fail2ban+ssh 密钥对 0. 保护好自己干活用的桌面机是一切安全的根本.1. 及时更新 /自动更新意义很 ...

  5. 5. Python 函数

    函数:(方法.功能) 作用:1.提高代码的复用性,2.让代码更简洁 函数命名方法   函数不调用是不会被执行的     def calc(a,b): #形参 #位置参数,必填,否则报错 res = a ...

  6. Authentication is required to set the network proxy

    在使用VNC访问集群的时候,总是弹出"Authentication is required to set the network proxy used for downloading pac ...

  7. Flink akka AskTimeoutException问题排查

    最近遇到一个很奇怪的问题,Flink任务正常启动正常运行一段时间后就会报错,,错误详情如下 2019-12-11 17:20:57.757 flink [flink-scheduler-1] ERRO ...

  8. 从零搭建php环境-php8-扩展-redis

    一.下载1.https://pecl.php.net/get/redis-5.3.2.tgz下载到本地,文件传输上传到 /usr/local/src/2.wget -P /usr/local/src/ ...

  9. 天龙八部<三联版>三

    虚竹经历这么多事情,只想回少林寺,在面馆遇到出来玩的阿紫被阿紫调戏而破了荤戒.随后丁春秋到来,抓到阿紫,恰好慕容复也来到面馆,二人相斗,阿紫在打斗过程中被丁春秋刺瞎双眼,但却被游坦之救走, 最后慕容复 ...

  10. ethcat开发记录 三

    一.关于controlword的控制 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 保留 待定 暂停 故障复位 模式有关 伺服使能 快停 上电 伺服准备好