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 全解析 今天发一篇”水文”,可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一块来介绍.本来以为花不了 ...
随机推荐
- SQL数据库基础(三)
认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点. 数据库备 ...
- 如果一个游戏上面加一个透明层,js能不能实现 点击透明层的任意点 而正常玩游戏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Android使用默认样式创建View的几个姿势
以下内容是分析安卓源码所得: 1: 使用默认样式创建View的方式, 源码文件 Button.Java 注:此文参考http://www.linzenews.com/ 中的内容所写,如侵删! 2: ...
- andriod RadioButton
<?xml version="1.0" encoding="UTF-8"?> <LinearLayout android:orientatio ...
- 其他图片和webP之间相互转换
WebP 是谷歌研发出来的一种图片数据格式,它是一种支持有损压缩和无损压缩的图片文件格式,派生自图像编码格式 VP8.根据 Google 的测试,无损压缩后的 WebP 比 PNG 文件少了 45% ...
- block中出现此种报错: Incompatible block pointer types initializing 'float (^__strong)(float, float)' with an expression of type 'int (^)(float, float)'
当block(代码块)的返回值是float时,应注意的地方:定义的返回值类型一定要与return的返回值类型一样 我们以两个数的四则运算来举例 在main.m文件中的四则运算中,我采用两种返回值类型( ...
- 【转】Visual Studio 非常实用的调试技巧
下面有从浅入深的6个问题,您可以尝试回答一下 一个如下的语句for (int i = 0; i < 10; i++){if (i == 5)j = 5;},什么都写在一行,你怎么在j=5前面插入 ...
- 多线程之NSOperation和NSOperationQueue
这篇文章里我将不过多的谈及理论知识,这些东西会的自然会,不会的,看多了也是云里雾里.下面我讲更多的用代码+注释的方式来讲如何使用NSOperation和NSOperationQueue. 1.NSOp ...
- 很好的UI动效设计参考
toolBar下拉:
- (传输层)TCP协议
目录 首部格式数据单位特定注意自动重传请求ARQ具体实现发送缓存接收缓存滑动窗口确认丢失和确认迟到超时重传时间选择报文段的发送时机运输连接发送TCP请求客户端拥塞处理相关概念避免拥塞具体实现TCP 的 ...