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 全解析 今天发一篇”水文”,可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一块来介绍.本来以为花不了 ...
随机推荐
- 使用Apache ab进行压力测试(参数说明)
我们一般会使用Apache自带的ab来对项目进行压力测试,看项目的执行情况如何. 我们可以使用 ab -v 来查看ab的详细参数使用方法. [root@node234 bin]# ./ab -v ab ...
- [WCF REST] Web消息主体风格(Message Body Style)
对于Web HTTP编程模型来说,服务契约中作为操作的方法无须应用OperationContractAttribute特性,只需要根据需要应用WebGetAttribute与WebInvokeAttr ...
- css实现垂直居中的方法
1,设置其line-height值,使之与其高度相同 2,设置table结构,用vertical-align:middle; 3,应用定位,父级别:position:relative:子级:posit ...
- Centos 7: 打开Samba防火墙端口
firewall-cmd --permanent --add-port=137/tcp firewall-cmd --permanent --add-port=138/tcp firewall-cmd ...
- CAS实现单点登入(sso)经典教程
本教程我已按照步骤实现,不过要深入了解单点登入还需要进一步的学习,掌握其中的精髓. 一.简介 1.cas是有耶鲁大学研发的单点登录服务器 2.本教材所用环境 Tomcat7.2 JDK6 CAS Se ...
- OC第一讲:类和对象
今天终于开始进行OC的学习了 一.首先讲了NSLog NSLog是oc里面的输出语句,其用法和printf差不多,但是还是有差别的 1,NSLog是自动换行的,不用像printf那样还需要加'\n': ...
- CoreAnimation-03-隐式动画
简介 每个UI控件,默认自动创建一个图层(根图层),即每个UI控件对应于至少一个图层 可以手动创建图层,这些图层为非根图层 对非根图层的某些属性(标记为Animatable的属性)进行修改,默认会自动 ...
- C语言错误之--初始值(低级错误)
今天犯了一个低级错误,虽然低级,但是也不能忽视,一个低级错误以后可能小则浪费时间和精力,大则酿成整个app的项目bug.
- windows 和 linux ssh互连
从windows连接到linux: linux开启sshd服务即可,主要是windows的配置如下: 1.使用软件,putty可以直接使用 2.使用cmd控制台连接linux,安装SSH Secure ...
- Oracle SQL Developer连接报错(ORA-12505)
Oracle SQL Developer连接报错(ORA-12505) 之前我的Oracle数据库出现问题,费大波周折终于弄好了,今天又创建了一个DBA管理员的连接方式出现问题,本人现在把解决方案分享 ...