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 继承的练习的更多相关文章

  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. 配置文件,环境配置和war报分离,方便生产更改

    在生产环境实现配置文件和war包 的分离,为方便在必要的时候进行一定的更改,可以避免修改包,但是需要重启 最初为这样的选择配置,单不知为何未生效,修改为配置2配置方法,但不灵活,待跟进.配置1: &l ...

  2. 编写运行R脚本

    1.在后台运行R 1.1 创建file.R文件 1.2 在文件首行键入: #! /path/to/Rscript 1.3 在下面的行中,键入R代码 1.4 保存(记得有png(),jpeg(),... ...

  3. windows临界区

    临界区: 临界区是一种轻量级机制,在某一时间内只允许一个线程执行某个给定代码段.通常在多线程修改全局数据时会使用临界区.事件.信号量也用于多线程同步,但临界区与它们不同,并不总是执行向内核模式的切换, ...

  4. Windows工作集内存

    Windows任务管理器默认情况下,“内存(私人工作集)”列处于选中状态. 私人工作集是工作集的一个子集,它是描述每个进程所使用的内存数量的技术术语.私人工作集专门描述了某个进程正在使用的且无法与其他 ...

  5. javascript宿主对象之window.history

    window.historys属性允许我们操作同一个浏览器回话中的已访问页面,例如我们可以看到在这之前我们浏览页面的数量: window.history.length 由于隐私保护,我们无法获取这些页 ...

  6. 迭代器 iterator(二): 用iterator遍历arraylist

           迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址.迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些 ...

  7. OC数组排序

    NSArray *array = @[@"tailong", @"kaersasi", @"airuiliya", @"yingl ...

  8. 【原】ios下比较完美的单例模式,已验证

    网上关于ios单例模式实现的帖子已经很多了,有很多版本,里面有对的也有不对的.我在使用过程中很难找到一个比较完美的方法,索性自己写一个吧,经过项目验证是比较合理的一个版本. static PRAuto ...

  9. WPF 自定义控件,在ViewModel里面获取自定义控件的值

    上图: 用户自定义CS里面代码如下: 自定义控件XAML里面的代码如下: 调用用户自定义控件的页面代码如下: CItySelected的属性值就是我们点击确定按钮以后得到的值,通过双向绑定在VIewM ...

  10. iOS开发之网络数据解析--中文输出

    对于服务器返回的数据,解析之后直接打印,如果数据中原本有中文,可能会出现中文乱码的结果: 为了避免这个问题,可以通过类别来重写系统和打印相关的方法. 步骤: 1.新建文件名:Foundation+Lo ...