/*
* 类的继承和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关键字以及继承关系中方法的覆写的更多相关文章

  1. JavaSE复习日记 : 多态

    /** * 里氏替换原则 : * 能使用父类的地方,一定可以使用子类 * 什么是多态 : * 父类的引用,指向子类的对象 * 多态的前提条件 : * 有继承关系的两个类 * 多态的目的 : * ☆☆☆ ...

  2. JAVA面对对象(二)——继承、方法的覆写

    1.继承就是基于已存在的类构造一个新类,继承已存在的类就能复用类的方法和属性,并且能够添加新的方法和属性.也就是子类和父类 2.一个父类可以拥有多个子类,一个子类只允许有一个父类 3.用extends ...

  3. JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符

    // Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * ...

  4. JavaSE复习日记 : 抽象类

    /* * 抽象类 * 抽象: * 面向对象的三大核心思想; * 封装: 封装,ppp是封装的一部分 * 继承; * 多态: 父类的引用指向子类的对象 * 引用: 是指一个引用型变量 * 有哪些变量? ...

  5. JavaSE复习日记 : 接口

    /* * 接口 * 引用数据类型: * 类,接口,数组; * * 接口是一种引用数据类型,可以看作是一个特殊的类,它存在的目的是为了解决没有多重继承引起的功能弱的问题而设计的,一个类只能有一个父类,但 ...

  6. extends 类的继承 / super关键字,调用继承类里面的函数和变量

    Son 继承Father 当其他脚本想调用 Father类里面的变量 or 方法 可以把 Son r=new Son()   等价于 Father r=new Father() 注意: 函数只能单继承 ...

  7. JavaSE复习日记 : 方法的调用和方法的重载

    /* * 方法的调用和方法重载 */ /* * 什么是方法? * 方法就是一个有名字的代码段; * 方法的调用: * 在方法里调用另外一个方法里面的东西就是方法调用; * 或者可以认为"另外 ...

  8. JAVA构造方法,继承关系和SUPER关键字

    SUPER可调用父类的构造方法,但要注意默认调用和参数调用. 同时,在继承类时,可以用SUPER调用其它非构造方法哟. class Test extends Object{ public Test() ...

  9. JavaSE复习日记 : 实例化对象/构造方法和this关键字

    /* * 实例化对象/对象的构造方法/this关键字 */ /* * 实例化对象 * * 就是实例化某一个类; * 从不同角度去理解的话就是: * 1. 从人的认知角度: * 就是具体化某个东西; * ...

随机推荐

  1. #include <stdio.h>

    1 fflush 2 fgetc 3 fgets 4 fprintf 5 fputc 6 fputs 7 fscanf 8 fseek 9 ftell 10 perror 11 remove 12 r ...

  2. wx.Dialog

    wx.Dialog A dialog box is a window with a title bar and sometimes a system menu, which can be moved ...

  3. Java主线程等待子线程、线程池

    public class TestThread extends Thread { public void run() { System.out.println(this.getName() + &qu ...

  4. STL 源代码剖析 算法 stl_algo.h -- random_shuffle

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie random_shuffle ------------------------------- ...

  5. [置顶] 有关ListIterator接口的add与remove方法探究

    ListIterator接口继承自Iterator接口,新增了add()等方法. 关于ListIterator的add()方法的作用(接口是没有方法实现的,但其实现类对于add()方法的实现机制大致相 ...

  6. SQLServer与Oracle的对照

        近期去铁科院面试,项目组长问了我这样一下问题:SQLServer与Oracle的差别是什么?从进入软件行业.从開始CS的编码到BS的编码过程中使用的都是SQLServer.在半年前開始敲DRP ...

  7. jquery动态连接节点

    <1> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...

  8. Java RMI 学习笔记

    概况 功能:提供了客户辅助对象和服务辅助对象,为客户辅助对象创建和服务辅助对象形同的方法. 优点:客户不必写任何网络或I/O代码,调用远程方法就和运行在客户自己的本地JVM上对对象进行的正常方法一样. ...

  9. Error 56: …… VPN Service has not been started

    vpn service在系统服务中名为Cisco System, Inc. VPN Service(cvpnd),异常情况下,该服务时停止的,并且手动启动该服务后没几秒,就被kill了.根据Zhiga ...

  10. PHP 提交checkbox表单时 判断复选框是否被选中

    function GetTitleImgPath(){ $titleImgPath = ""; if (isset($_POST["titlecheckbox" ...