/*
* 类的继承和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. [转]Asp.Net MVC使用HtmlHelper渲染,并传递FormCollection参数的陷阱 【转】

    在Asp.Net MVC 1.0编程中,我们经常遇见这样的场景,在新建一个对象时候,通过HtmlHelper的方式在View模型中渲染Html控件,当填写完相关内容后,通过Form把需要新建的内容Po ...

  2. Android常用控件之Fragment仿Android4.0设置界面

    Fragment是Android3.0新增的概念,是碎片的意思,它和Activity很相像,用来在一个Activity中描述一些行为或部分用户界面:使用多个Fragment可以在一个单独的Activi ...

  3. D. DZY Loves Modification

    D. DZY Loves Modification time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  4. easyui的样式easyui-textbox的一个bug

    easyui-testbox这个样式很恶心,用了这个就不能用传统的JQ来取值了,最近在使用上又发现了一个问题,就是赋值为0时,在输入框上会不显示,坑. <input class="ea ...

  5. 简述Linq中.ToList(), .AsEnumerable(), AsQueryable()的区别和用法

    [TOC] 这3个方法的功能完全不同, 应按照具体业务场景使用. AsQueryable() 先说说什么是 IQueryable IQueryable 是当前的 data provider 返回的类型 ...

  6. MJExtension

    MJExtension 长话短说下面我们通过一个列子来看下怎么使用 1. 先把框架拉进去你的项目 2. 首先我这次用到的json最外层是一个字典,根据数据的模型我们可以把这个归类为字典中有数组,数组中 ...

  7. 教你wamp下多域名如何配置

    wamp下多域名配置问题 1.找到wamp安装目录的apache安装目录 找到 httpd.conf文件 例如我安装的目录为 E:\wamp\bin\apache\apache2.2.8\conf\h ...

  8. poj3090--欧拉函数

    #include<iostream> using namespace std; //欧拉函数 int eular(int n){ ,i; ;i*i<=n;i++){ ){ n/=i; ...

  9. Euclid gcd规则的证明

    Euclid 规则:如果x和y都是正整数,而且x>=y,那么gcd(x,y)=gcd(x mod y, y) 假设x和y的gcd为a,那么必然有 x=a*n1 y=a*n2(gcd(n1,n2) ...

  10. QF——UITableViewCell性能优化(视图复用机制)

    这几篇博客总结的不错: 点击进入 点击进入 总结起来方案一般有以下几种: 1.不使用透明视图: 2.减少视图的个数: 3.cell复用机制:(重点) 4.图片缓存: 5.网络请求使用非主线程. 6.预 ...