JavaSE复习日记 : 继承关系和super关键字以及继承关系中方法的覆写
/*
* 类的继承和super关键字
*
* 软件开发的三大目的:
* 可拓展性;
* 可维护性;
* 可重用性;
*
* 这里单说下可重用性这一项:
* 为了代码复用,复用方式有:
* 函数的调用复用;
* 类的实例化复用,类直接的复用;
* 类的继承复用;
* 前两个我都有发过,这里就说一下类的继承,以及继承中用的较多的关键字:super;
*
*
* 首先要先了解什么是继承?
* 继承,用人认知的角度说的话就好比一个父亲的东西由他的几个儿子来继承,也就是有了父亲的东西,同时也有自己的东西----从网上也看到过一句话形容继承:长江后浪推前浪,子类都比父类强;
* 也就是说,发生继承关系的时候,父类的东西,子类都有,但子类的东西父类不一定有;
*
* 那从代码的角度来说:
* 当一个类被另外一个类继承的时候,这个类就是父类,另一个类就是子类,子类拥有了父类里面的方法和属性,同时子类也有自己的方法和属性;
* 继承的语法:
* public class A extends B{
}
*
* 即:A继承于B,现在A里有了B的方法和属性;
*
* 继承里需要注意的是: 类和类之间只能单继承,一个类如果没有显示继承了其他类,则该类默认继承Object.java.lang.Object;
* Object是所有类的祖类,可以看作是任何没有继承关系的类的父类;
*
* 我们代码中看:
*/ public class JavaSE{
public static void main(String[] args){
Animal a = new Animal();//实例化父类对象;
a.eat(); Cat c = new Cat();//实例化子类对象;
c.eat(); Animal m = new Mouse();//父类引用指向子类对象,这是多态,先别太深究这个;
m.eat();
}
} class Animal{
public void eat(){
int i = ;
System.out.println( "动物吃东西" );
}
} class Cat extends Animal{//这里我是没有写任何方法的,但是实例化之后,却能调用父类的eat()方法,证明Animl(父类)的成员方法被Cat(子类)继承了; } class Mouse extends Animal{//这里是子类对父类方法的覆写,所以调用子类就用子类的方法,调用谁就输出谁(指子类和父类);
public void eat(){
super.eat();//super关键字,特指父类,这里是调用父类里面的eat()方法,所以输出父类里的东西;
//这里说一下super关键字:
//super关键字用官方的解释是: super保存了父类型的特征;
//有一种错误的但是很好理解的说法是,super代表了对父类的引用,这种说法是不正确的,super并不会创建父类对象,但是可以先这么记;
//父类型的特征就包括了方法属性等等,在子类里面可以用'super.方法名()'调用父类里面的方法和属性;
//需要值得注意的是,有一个和super在作用上比较相似的关键字this,在构造方法中,this和super都只能放在构造方法的第一行,而且两者是不能共存的,即有this就没有super,反之一样;
//同时,当构造方法中既没有this,也没有super时,系统会默认一个super;
System.out.println( "老鼠吃大米" );
}
}
/*
* 继承关系中方法的覆写
*
* 覆写:
* 就是在子类继承父类成员方法之后,重新写了一个同名的方法,但方法的属性改变了,外部类调用子类方法时,会调用子类的属性而不是父类的属性,即覆盖并重写了从父类继承过来的方法;
*/ public class JavaSE{
public static void main(String[] args){
Animal a = new Animal();//实例化父类
a.eat();//调用: 对象名.方法名;
Animal c = new Cat();//多态,父类引用指向子类对象
c.eat();
Mouse m = new Mouse();//实例化子类
m.eat();
}
} class Animal{
public void eat(){
System.out.println( "动物在吃东西" );
}
} class Cat extends Animal{
public void eat(){//方法的覆写:和父类的方法名相同,但是属性不同,相当于覆盖了原有的继承过来的父类方法,自己重写了一下;
//调用的结果应该显示子类重写后的属性;
System.out.println( "猫在吃鱼" );
}
} class Mouse extends Animal{
public void eat(){//方法的覆写;
System.out.println( "老鼠在吃大米" );
}
}
JavaSE复习日记 : 继承关系和super关键字以及继承关系中方法的覆写的更多相关文章
- JavaSE复习日记 : 多态
/** * 里氏替换原则 : * 能使用父类的地方,一定可以使用子类 * 什么是多态 : * 父类的引用,指向子类的对象 * 多态的前提条件 : * 有继承关系的两个类 * 多态的目的 : * ☆☆☆ ...
- JAVA面对对象(二)——继承、方法的覆写
1.继承就是基于已存在的类构造一个新类,继承已存在的类就能复用类的方法和属性,并且能够添加新的方法和属性.也就是子类和父类 2.一个父类可以拥有多个子类,一个子类只允许有一个父类 3.用extends ...
- JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符
// Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * ...
- JavaSE复习日记 : 抽象类
/* * 抽象类 * 抽象: * 面向对象的三大核心思想; * 封装: 封装,ppp是封装的一部分 * 继承; * 多态: 父类的引用指向子类的对象 * 引用: 是指一个引用型变量 * 有哪些变量? ...
- JavaSE复习日记 : 接口
/* * 接口 * 引用数据类型: * 类,接口,数组; * * 接口是一种引用数据类型,可以看作是一个特殊的类,它存在的目的是为了解决没有多重继承引起的功能弱的问题而设计的,一个类只能有一个父类,但 ...
- extends 类的继承 / super关键字,调用继承类里面的函数和变量
Son 继承Father 当其他脚本想调用 Father类里面的变量 or 方法 可以把 Son r=new Son() 等价于 Father r=new Father() 注意: 函数只能单继承 ...
- JavaSE复习日记 : 方法的调用和方法的重载
/* * 方法的调用和方法重载 */ /* * 什么是方法? * 方法就是一个有名字的代码段; * 方法的调用: * 在方法里调用另外一个方法里面的东西就是方法调用; * 或者可以认为"另外 ...
- JAVA构造方法,继承关系和SUPER关键字
SUPER可调用父类的构造方法,但要注意默认调用和参数调用. 同时,在继承类时,可以用SUPER调用其它非构造方法哟. class Test extends Object{ public Test() ...
- JavaSE复习日记 : 实例化对象/构造方法和this关键字
/* * 实例化对象/对象的构造方法/this关键字 */ /* * 实例化对象 * * 就是实例化某一个类; * 从不同角度去理解的话就是: * 1. 从人的认知角度: * 就是具体化某个东西; * ...
随机推荐
- POJ 2029 DP || 暴力
在大矩形中找一个小矩形 使小矩形包括的*最多 暴力或者DP 水题 暴力: #include "stdio.h" #include "string.h" int ...
- 《Qt编程的艺术》——8.2 显示目录层次
现在我们准备通过创建一个小程序来获得关于InterView的实践经验,使用QDirModel和拿来就用的view,来在四个不同的view中显示主目录,如图8.5所示.在代码里,除了例行公事先实例化一个 ...
- Codeforces 191C Fools and Roads(树链拆分)
题目链接:Codeforces 191C Fools and Roads 题目大意:给定一个N节点的数.然后有M次操作,每次从u移动到v.问说每条边被移动过的次数. 解题思路:树链剖分维护边,用一个数 ...
- javascript高级程序设计一(1-80)
源代码研究,实例:http://fgm.cc/learn/ js面试知识点: 1:原生.闭包.上下文.call.apply.prototype. 2:jsonp:用script标签实现跨域.xss:j ...
- php 实现二进制加法运算
php实现二进制加法: 思路:没有工作中应用过此场景,但十进制的加法还是经常做的,能不能用十进制加法变相实现呢? 答案是可以的,并且php也提供进制间转换的函数,我的实现使用了 bindec():二进 ...
- Nutch的发展历程
Nutch的创始人是Doug Cutting,他同时也是Lucene.Hadoop和Avro开源项目的创始人 下面是Nutch的发展历程: 月由Doug Cutting发起,托管于Sourceforg ...
- Linux下终端利器tmux(转)
“君子生非异也,善假于物也” .–语出<荀子·劝学> 如果记得没错的话,<荀子·劝学>我们这一代高中的时候应该都读过这篇文章.原意大概是君子的资质与一般人没有什么区别,君子之所 ...
- java反射入门
http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html package reflectTest; class Demo{ / ...
- Linux 环境变量和source命令 (转)
可能是班门弄斧了,仅share给尚不知道的童鞋. 1. 问题的来源: 为什么我们编译Android代码时,需要输入: source ./build/envsetup.sh 或者 . . ...
- oracle ORA-00913: 值过多
--oracle中查看表是否被锁 查看表是否被锁 SELECT /*+ rule*/ a.sid, b.owner, object_name, object_type FROM v$loc ...