java7-4 继承的练习
1、Override和Overload的区别,Overload能改变返回值类型吗?
答:
Override就是方法重写:在子类中,出现和父类中一模一样的方法声明的现象
Overload就是方法重载:在同一类中,出现的方法名相同,参数列表不同的现象
Overload可以改变返回值类型,因为它和返回值类型无关
2、this关键字和super关键字分别代表什么?以及他们各自的使用场景
答:
this:代表当前类的对象引用
super:代表父类存储空间的标识(也就是父类的引用,通过这个可以访问父类的成员)
场景:
成员变量:this.成员变量 super.成员变量
构造方法:this.(...) super(...)
成员方法:this.成员方法 super.成员方法
1、练习:
/* 学生案例和老师案例讲解 学生: 成员变量;姓名,年龄 构造方法:无参,带参 成员方法:getXxx()/setXxx() 老师: 成员变量;姓名,年龄 构造方法:无参,带参 成员方法:getXxx()/setXxx() 看上面两个类的成员,发现了很多相同的东西,所以我们就考虑抽取一个共性的类: 人: 成员变量;姓名,年龄 构造方法:无参,带参 成员方法:getXxx()/setXxx() 学生 继承 人 老师 继承 人 */ //定义人类 class Person { //姓名 private String name; //年龄 private int age; public Person() { } public Person(String name,int age) { //"林青霞",27 this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } //定义学生类 class Student extends Person { public Student() {} public Student(String name,int age) { //"林青霞",27 //this.name = name; 这样子出错,因为name和age是private的,私人的,这样无法访问的。 //this.age = age; 而如果都不写,则直接走父类的无参构造。结果是 null 0 super(name,age); //正确的,显示地调用父类的带参构造 } } //定义老师类 class Teacher extends Person {
} class ExtendsTest4 { public static void main(String[] args) { //创建学生对象并测试 //方式1 Student s1 = new Student(); s1.setName("林青霞"); s1.setAge(27); System.out.println(s1.getName()+"---"+s1.getAge()); //方式2 Student s2 = new Student("林青霞",27); System.out.println(s2.getName()+"---"+s2.getAge()); //补齐老师类中的代码并进行测试。 } }
2、练习
package java8; /* 猫狗案例讲解 先找到具体的事物,然后发现具体的事物有共性,才提取出一个父类。 猫: 成员变量:姓名,年龄,颜色 构造方法:无参,带参 成员方法: getXxx()/setXxx() eat() palyGame() 狗: 成员变量:姓名,年龄,颜色 构造方法:无参,带参 成员方法: getXxx()/setXxx() eat() lookDoor() 共性: 成员变量:姓名,年龄,颜色 构造方法:无参,带参 成员方法: getXxx()/setXxx() eat() 把共性定义到一个类中,这个类的名字叫:动物。 动物类: 成员变量:姓名,年龄,颜色 构造方法:无参,带参 成员方法: getXxx()/setXxx() eat() 猫: 构造方法:无参,带参 成员方法:palyGame() 狗: 构造方法:无参,带参 成员方法:lookDoor() */ class dongWu{ // 成员变量 private String name; private String color; private int age; //无参构造方法 public dongWu(){} //成员方法 public void show(String name,String color,int age){ this.name = name; this.color = color; this.age = age; } //成员方法 public String getName(){ return name; } public String getColor(){ return color; } public int getAge(){ return age; } public void setName(String name){ this.name = name; } public void setColor(String color){ this.color = color; } public void setAge(int age){ this.age = age; } public void sleep(){ System.out.println("ZZzzz....."); } } class Cat extends dongWu{ //无参构造方法 public Cat(){} //有参构造方法 public Cat(String name,String color,int age) { super.show(name, color, age); } public void play(){ System.out.println("猫玩毛球。。。。"); } } class Dog extends dongWu{ //无参构造方法 public Dog(){} //有参构造方法 public Dog(String name,String color,int age) { super.show(name, color, age); } public void look(){ System.out.println("看门?犯二!"); } } class ExtendsText2{ public static void main(String[] args){ //方法1 Cat c1 = new Cat(); c1.setName("短尾猫"); c1.setColor("虎纹"); c1.setAge(1); System.out.println(c1.getName()+" "+c1.getColor()+" "+c1.getAge()); c1.play(); Dog d1 = new Dog(); d1.setName("哈士奇"); d1.setColor("白"); d1.setAge(1); System.out.println(d1.getName()+" "+d1.getColor()+" "+d1.getAge()); d1.look(); //方法2 Cat c2 = new Cat("短尾猫","虎纹",1); System.out.println(c2.getName()+" "+c2.getColor()+" "+c2.getAge()); c2.play(); Dog d2 = new Dog("二哈","白",1); System.out.println(d2.getName()+" "+d2.getColor()+" "+d2.getAge()); d2.look(); } }
java7-4 继承的练习的更多相关文章
- java-7继承
请自行编写代码测试以下特性(动手动脑):在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. public class QWE { public void main(String[] ...
- java7笔记
1 switch case 增加字符串类型,原理根据字符串hashcode以及string.equal比较2 数值字面量改进 新增二进制数值字面量 0b000004,在数值中间新增下划线方便阅读200 ...
- Java7并发编程实战(一) 守护线程的创建和运行
Java里有一种特殊的线程叫做守护(Daemon)线程,这种线程的优先级很低,通常来说,当一个应用程序里面没有其他线程运行的时候,守护线程才运行,当线程是程序中唯一运行的线程时,守护线程执行结束后,J ...
- Java5、Java6、Java7的新特性
Java5 Java 5添加了8个语言特性:泛型,类型安全枚举,注解,自动装箱和拆箱,增强的循环,静态导入,可变参数,协变返回类型. 1.泛型 Generics: 引用泛型之后,允许指定集合里元素的类 ...
- java5、java6、java7、java8的新特性
Java5: 1.泛型 Generics: 引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处. Parameterized Type作为参数 ...
- JavaSE复习_3 继承
△先默认初始化,在显示初始化,在构造函数初始化 △继承的弊端:代码的耦合性增加了. △子类不能继承父类的构造方法. △子类会拥有父类的私有成员变量,但是必须通过get,set方法访问. △super不 ...
- java7新特新(一) Try-with-resources (TWR)
Try-with-resources (TWR) 在处理IO的代码中,我们会使用大量的try...catch()...finally...语法,其中会在finally进行IO的close操作,写过py ...
- ConcurrentHashMap 从Java7 到 Java8的改变
一.关于分段锁 集合框架很大程度减少了java程序员的重复劳动,然而,在Java多线程环境中,以线程安全的方式使用集合类是一个首先考虑的问题. 越来越多的程序员了解到了ConcurrentHashMa ...
- Java7 和 Java8 中的 ConcurrentHashMap 原理解析
Java7 中 ConcurrentHashMap ConcurrentHashMap 和 HashMap 思路是差不多的,但是因为它支持并发操作,所以要复杂一些. 整个 ConcurrentHash ...
- Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析
Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析 今天发一篇”水文”,可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一块来介绍.本来以为花不了 ...
随机推荐
- 桂电在linux、Mac OS环境下使用出校器(支持2.14)
这是guetsec学长在三院科协学长所抓包逆向分析1.81版出校器的基础上,用python写的一款为Mac和linux环境开发的出校器. 最后我做了略微修改,支持暂时最新版本2.14.下面有直接从源码 ...
- 【JavaEE】Hibernate继承映射,不用多态查询只查父表的方法
几个月前,我在博问里面发了一个问题:http://q.cnblogs.com/q/64900/,但是一直没有找到好的答案,关闭问题以后才自己解决了,在这里分享一下. 首先我重复一下场景,博问里面举的动 ...
- Vue自定义过滤器
gitHub地址: https://github.com/lily1010/vue_learn/tree/master/lesson05 一 自定义过滤器(注册在Vue全局) 注意事项: (1)全局方 ...
- C# 线程基础
1. 线程的基本概念 简单的讲进程就是程序分配在内存当中,等待处理器进行处理,请记住线程会消耗大量的操作系统资源.多个线程共享一个物理处理器将导致处理器忙于处理管理这些进程,而无法运行程序. 使用线程 ...
- sharepoint获取exchange邮箱报错:该帐户无权模拟所请求的用户
现象: sharepoint获取exchange邮箱报错:该帐户无权模拟所请求的用户 处理办法: 1.Open the Exchange Management Shell 2.输入: New-Mana ...
- Objective-C中@encode的使用
今天看Mansonry的代码时,碰到一个生僻的关键字(也许只是自己没用过).:-) @encode => 将给定类型编码为内部表示的字符串. 为了方便自己查阅,顺便也写个小例子,贴在这里,实践 ...
- SQL JOIN
- UISlider显示进度(并且实现图片缩放)
图片展示效果如下: 其他没什么好说的,直接上代码: RootView.h: #import <UIKit/UIKit.h> @interface RootView : UIView @pr ...
- 关于Socket建立长连接遇到的bug信息
下面是本人在Socket连接的开发中遇到的bug总结 1."远程服务器关闭了Socket长连接'的错误信息 2.关于"kCFStreamNetworkServiceTypeVoIP ...
- 深入理解java虚拟机(5)---字节码执行引擎
字节码是什么东西? 以下是百度的解释: 字节码(Byte-code)是一种包含执行程序.由一序列 op 代码/数据对组成的二进制文件.字节码是一种中间码,它比机器码更抽象. 它经常被看作是包含一个执行 ...