1、Override和Overload的区别,Overload能改变返回值类型吗?

答:

Override就是方法重写:在子类中,出现和父类中一模一样的方法声明的现象

Overload就是方法重载:在同一类中,出现的方法名相同,参数列表不同的现象

Overload可以改变返回值类型,因为它和返回值类型无关

2、this关键字和super关键字分别代表什么?以及他们各自的使用场景

答:

this:代表当前类的对象引用

super:代表父类存储空间的标识(也就是父类的引用,通过这个可以访问父类的成员)

场景:

成员变量:this.成员变量 super.成员变量

构造方法:this.(...) super(...)

成员方法:this.成员方法 super.成员方法

1、练习:

  1. /*
  2.  
  3. 学生案例和老师案例讲解
  4.  
  5. 学生:
  6.  
  7. 成员变量;姓名,年龄
  8.  
  9. 构造方法:无参,带参
  10.  
  11. 成员方法:getXxx()/setXxx()
  12.  
  13. 老师:
  14.  
  15. 成员变量;姓名,年龄
  16.  
  17. 构造方法:无参,带参
  18.  
  19. 成员方法:getXxx()/setXxx()
  20.  
  21. 看上面两个类的成员,发现了很多相同的东西,所以我们就考虑抽取一个共性的类:
  22.  
  23. 人:
  24.  
  25. 成员变量;姓名,年龄
  26.  
  27. 构造方法:无参,带参
  28.  
  29. 成员方法:getXxx()/setXxx()
  30.  
  31. 学生 继承 人
  32.  
  33. 老师 继承 人
  34.  
  35. */
  36.  
  37. //定义人类
  38.  
  39. class Person {
  40.  
  41. //姓名
  42.  
  43. private String name;
  44.  
  45. //年龄
  46.  
  47. private int age;
  48.  
  49. public Person() {
  50.  
  51. }
  52.  
  53. public Person(String name,int age) { //"林青霞",27
  54.  
  55. this.name = name;
  56.  
  57. this.age = age;
  58.  
  59. }
  60.  
  61. public String getName() {
  62.  
  63. return name;
  64.  
  65. }
  66.  
  67. public void setName(String name) {
  68.  
  69. this.name = name;
  70.  
  71. }
  72.  
  73. public int getAge() {
  74.  
  75. return age;
  76.  
  77. }
  78.  
  79. public void setAge(int age) {
  80.  
  81. this.age = age;
  82.  
  83. }
  84.  
  85. }
  86.  
  87. //定义学生类
  88.  
  89. class Student extends Person {
  90.  
  91. public Student() {}
  92.  
  93. public Student(String name,int age) { //"林青霞",27
  94.  
  95. //this.name = name; 这样子出错,因为name和age是private的,私人的,这样无法访问的。
  96.  
  97. //this.age = age; 而如果都不写,则直接走父类的无参构造。结果是 null 0
  98.  
  99. super(name,age); //正确的,显示地调用父类的带参构造
  100.  
  101. }
  102.  
  103. }
  104.  
  105. //定义老师类
  106.  
  107. class Teacher extends Person {
  108. }
  109.  
  110. class ExtendsTest4 {
  111.  
  112. public static void main(String[] args) {
  113.  
  114. //创建学生对象并测试
  115.  
  116. //方式1
  117.  
  118. Student s1 = new Student();
  119.  
  120. s1.setName("林青霞");
  121.  
  122. s1.setAge(27);
  123.  
  124. System.out.println(s1.getName()+"---"+s1.getAge());
  125.  
  126. //方式2
  127.  
  128. Student s2 = new Student("林青霞",27);
  129.  
  130. System.out.println(s2.getName()+"---"+s2.getAge());
  131.  
  132. //补齐老师类中的代码并进行测试。
  133.  
  134. }
  135.  
  136. }

2、练习

  1. package java8;
  2.  
  3. /*
  4.  
  5. 猫狗案例讲解
  6.  
  7. 先找到具体的事物,然后发现具体的事物有共性,才提取出一个父类。
  8.  
  9. 猫:
  10.  
  11. 成员变量:姓名,年龄,颜色
  12.  
  13. 构造方法:无参,带参
  14.  
  15. 成员方法:
  16.  
  17. getXxx()/setXxx()
  18.  
  19. eat()
  20.  
  21. palyGame()
  22.  
  23. 狗:
  24.  
  25. 成员变量:姓名,年龄,颜色
  26.  
  27. 构造方法:无参,带参
  28.  
  29. 成员方法:
  30.  
  31. getXxx()/setXxx()
  32.  
  33. eat()
  34.  
  35. lookDoor()
  36.  
  37. 共性:
  38.  
  39. 成员变量:姓名,年龄,颜色
  40.  
  41. 构造方法:无参,带参
  42.  
  43. 成员方法:
  44.  
  45. getXxx()/setXxx()
  46.  
  47. eat()
  48.  
  49. 把共性定义到一个类中,这个类的名字叫:动物。
  50.  
  51. 动物类:
  52.  
  53. 成员变量:姓名,年龄,颜色
  54.  
  55. 构造方法:无参,带参
  56.  
  57. 成员方法:
  58.  
  59. getXxx()/setXxx()
  60.  
  61. eat()
  62.  
  63. 猫:
  64.  
  65. 构造方法:无参,带参
  66.  
  67. 成员方法:palyGame()
  68.  
  69. 狗:
  70.  
  71. 构造方法:无参,带参
  72.  
  73. 成员方法:lookDoor()
  74.  
  75. */
  76.  
  77. class dongWu{
  78.  
  79. // 成员变量
  80.  
  81. private String name;
  82.  
  83. private String color;
  84.  
  85. private int age;
  86.  
  87. //无参构造方法
  88.  
  89. public dongWu(){}
  90.  
  91. //成员方法
  92.  
  93. public void show(String name,String color,int age){
  94.  
  95. this.name = name;
  96.  
  97. this.color = color;
  98.  
  99. this.age = age;
  100.  
  101. }
  102.  
  103. //成员方法
  104.  
  105. public String getName(){
  106.  
  107. return name;
  108.  
  109. }
  110.  
  111. public String getColor(){
  112.  
  113. return color;
  114.  
  115. }
  116.  
  117. public int getAge(){
  118.  
  119. return age;
  120.  
  121. }
  122.  
  123. public void setName(String name){
  124.  
  125. this.name = name;
  126.  
  127. }
  128.  
  129. public void setColor(String color){
  130.  
  131. this.color = color;
  132.  
  133. }
  134.  
  135. public void setAge(int age){
  136.  
  137. this.age = age;
  138.  
  139. }
  140.  
  141. public void sleep(){
  142.  
  143. System.out.println("ZZzzz.....");
  144.  
  145. }
  146.  
  147. }
  148.  
  149. class Cat extends dongWu{
  150.  
  151. //无参构造方法
  152.  
  153. public Cat(){}
  154.  
  155. //有参构造方法
  156.  
  157. public Cat(String name,String color,int age)
  158.  
  159. {
  160.  
  161. super.show(name, color, age);
  162.  
  163. }
  164.  
  165. public void play(){
  166.  
  167. System.out.println("猫玩毛球。。。。");
  168.  
  169. }
  170.  
  171. }
  172.  
  173. class Dog extends dongWu{
  174.  
  175. //无参构造方法
  176.  
  177. public Dog(){}
  178.  
  179. //有参构造方法
  180.  
  181. public Dog(String name,String color,int age)
  182.  
  183. {
  184.  
  185. super.show(name, color, age);
  186.  
  187. }
  188.  
  189. public void look(){
  190.  
  191. System.out.println("看门?犯二!");
  192.  
  193. }
  194.  
  195. }
  196.  
  197. class ExtendsText2{
  198.  
  199. public static void main(String[] args){
  200.  
  201. //方法1
  202.  
  203. Cat c1 = new Cat();
  204.  
  205. c1.setName("短尾猫");
  206.  
  207. c1.setColor("虎纹");
  208.  
  209. c1.setAge(1);
  210.  
  211. System.out.println(c1.getName()+" "+c1.getColor()+" "+c1.getAge());
  212.  
  213. c1.play();
  214.  
  215. Dog d1 = new Dog();
  216.  
  217. d1.setName("哈士奇");
  218.  
  219. d1.setColor("白");
  220.  
  221. d1.setAge(1);
  222.  
  223. System.out.println(d1.getName()+" "+d1.getColor()+" "+d1.getAge());
  224.  
  225. d1.look();
  226.  
  227. //方法2
  228.  
  229. Cat c2 = new Cat("短尾猫","虎纹",1);
  230.  
  231. System.out.println(c2.getName()+" "+c2.getColor()+" "+c2.getAge());
  232.  
  233. c2.play();
  234.  
  235. Dog d2 = new Dog("二哈","白",1);
  236.  
  237. System.out.println(d2.getName()+" "+d2.getColor()+" "+d2.getAge());
  238.  
  239. d2.look();
  240.  
  241. }
  242.  
  243. }

java7-4 继承的练习的更多相关文章

  1. java-7继承

    请自行编写代码测试以下特性(动手动脑):在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. public class QWE {    public void main(String[] ...

  2. java7笔记

    1 switch case 增加字符串类型,原理根据字符串hashcode以及string.equal比较2 数值字面量改进 新增二进制数值字面量 0b000004,在数值中间新增下划线方便阅读200 ...

  3. Java7并发编程实战(一) 守护线程的创建和运行

    Java里有一种特殊的线程叫做守护(Daemon)线程,这种线程的优先级很低,通常来说,当一个应用程序里面没有其他线程运行的时候,守护线程才运行,当线程是程序中唯一运行的线程时,守护线程执行结束后,J ...

  4. Java5、Java6、Java7的新特性

    Java5 Java 5添加了8个语言特性:泛型,类型安全枚举,注解,自动装箱和拆箱,增强的循环,静态导入,可变参数,协变返回类型. 1.泛型 Generics: 引用泛型之后,允许指定集合里元素的类 ...

  5. java5、java6、java7、java8的新特性

    Java5: 1.泛型 Generics:        引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处. Parameterized Type作为参数 ...

  6. JavaSE复习_3 继承

    △先默认初始化,在显示初始化,在构造函数初始化 △继承的弊端:代码的耦合性增加了. △子类不能继承父类的构造方法. △子类会拥有父类的私有成员变量,但是必须通过get,set方法访问. △super不 ...

  7. java7新特新(一) Try-with-resources (TWR)

    Try-with-resources (TWR) 在处理IO的代码中,我们会使用大量的try...catch()...finally...语法,其中会在finally进行IO的close操作,写过py ...

  8. ConcurrentHashMap 从Java7 到 Java8的改变

    一.关于分段锁 集合框架很大程度减少了java程序员的重复劳动,然而,在Java多线程环境中,以线程安全的方式使用集合类是一个首先考虑的问题. 越来越多的程序员了解到了ConcurrentHashMa ...

  9. Java7 和 Java8 中的 ConcurrentHashMap 原理解析

    Java7 中 ConcurrentHashMap ConcurrentHashMap 和 HashMap 思路是差不多的,但是因为它支持并发操作,所以要复杂一些. 整个 ConcurrentHash ...

  10. Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析

    Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析 今天发一篇”水文”,可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一块来介绍.本来以为花不了 ...

随机推荐

  1. 使用Apache ab进行压力测试(参数说明)

    我们一般会使用Apache自带的ab来对项目进行压力测试,看项目的执行情况如何. 我们可以使用 ab -v 来查看ab的详细参数使用方法. [root@node234 bin]# ./ab -v ab ...

  2. [WCF REST] Web消息主体风格(Message Body Style)

    对于Web HTTP编程模型来说,服务契约中作为操作的方法无须应用OperationContractAttribute特性,只需要根据需要应用WebGetAttribute与WebInvokeAttr ...

  3. css实现垂直居中的方法

    1,设置其line-height值,使之与其高度相同 2,设置table结构,用vertical-align:middle; 3,应用定位,父级别:position:relative:子级:posit ...

  4. Centos 7: 打开Samba防火墙端口

    firewall-cmd --permanent --add-port=137/tcp firewall-cmd --permanent --add-port=138/tcp firewall-cmd ...

  5. CAS实现单点登入(sso)经典教程

    本教程我已按照步骤实现,不过要深入了解单点登入还需要进一步的学习,掌握其中的精髓. 一.简介 1.cas是有耶鲁大学研发的单点登录服务器 2.本教材所用环境 Tomcat7.2 JDK6 CAS Se ...

  6. OC第一讲:类和对象

    今天终于开始进行OC的学习了 一.首先讲了NSLog NSLog是oc里面的输出语句,其用法和printf差不多,但是还是有差别的 1,NSLog是自动换行的,不用像printf那样还需要加'\n': ...

  7. CoreAnimation-03-隐式动画

    简介 每个UI控件,默认自动创建一个图层(根图层),即每个UI控件对应于至少一个图层 可以手动创建图层,这些图层为非根图层 对非根图层的某些属性(标记为Animatable的属性)进行修改,默认会自动 ...

  8. C语言错误之--初始值(低级错误)

    今天犯了一个低级错误,虽然低级,但是也不能忽视,一个低级错误以后可能小则浪费时间和精力,大则酿成整个app的项目bug.    

  9. windows 和 linux ssh互连

    从windows连接到linux: linux开启sshd服务即可,主要是windows的配置如下: 1.使用软件,putty可以直接使用 2.使用cmd控制台连接linux,安装SSH Secure ...

  10. Oracle SQL Developer连接报错(ORA-12505)

    Oracle SQL Developer连接报错(ORA-12505) 之前我的Oracle数据库出现问题,费大波周折终于弄好了,今天又创建了一个DBA管理员的连接方式出现问题,本人现在把解决方案分享 ...