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 = 10;
        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( "老鼠吃大米" );
    }
}
时间: 2024-10-30 10:46:41

JavaSE复习日记 : 继承关系和super关键字的相关文章

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

SUPER可调用父类的构造方法,但要注意默认调用和参数调用. 同时,在继承类时,可以用SUPER调用其它非构造方法哟. class Test extends Object{ public Test(){ System.out.println("Test1 First thing"); } public Test(String welcome){ System.out.println("Test1 " + welcome); } protected void doSo

JavaSE复习日记 : 多态

/** * 里氏替换原则 : * 能使用父类的地方,一定可以使用子类 * 什么是多态 : * 父类的引用,指向子类的对象 * 多态的前提条件 : * 有继承关系的两个类 * 多态的目的 : * ☆☆☆ 代码的重用 * 多态发什么在什么时候 : * 赋值的时候 * * !!!!!!!!! 多态中的 ☆☆☆ 覆写 是特指的 成员方法!!!!!!!!! * 什么是覆写 : * 就是在子类有个和父类相同的方法 : 方法名 , 参数列表 , 返回值类型 (和修饰符列表没关系) * 1 方法名相同 : 不相

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

// Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * 这里需要注意 a++ 和 ++a 的区别,后面说; */ /* public class Javase{ public static void main(String[] args){ int a = 10; int b = 20; int c = 30; System.out.println( a

JavaSE复习日记 : 抽象类

/* * 抽象类 * 抽象: * 面向对象的三大核心思想; * 封装: 封装,ppp是封装的一部分 * 继承; * 多态: 父类的引用指向子类的对象 * 引用: 是指一个引用型变量 * 有哪些变量? * 成员变量; * 构造方法的局部变量; * 普通方法的局部变量; * 立马声明立马使用的变量; * 静态变量; * 什么是抽象类? * 就是用abstract关键字修饰的类就叫抽象类; * 什么是抽象方法? * 没有方法体的方法叫抽象方法,连{}都没有;抽象方法必须在修饰符列表中加上abstrac

JavaSE复习_3 继承

△先默认初始化,在显示初始化,在构造函数初始化 △继承的弊端:代码的耦合性增加了. △子类不能继承父类的构造方法. △子类会拥有父类的私有成员变量,但是必须通过get,set方法访问. △super不是一个对象的引用,不能将super赋给另一个对象变量,它只是一个指示编译器调用超类方法的特殊关键字. △如果子类没有显示的调用超类的构造器,则将自动的调用超类默认的构造器,如果超类没有不带参数的构造器,并且在子类的构造器中也没有显式的调用其他构造器,将会编译报告错误. △顺序: 父类的静态成员赋值和

JavaSE复习日记 : 接口

/* * 接口 * 引用数据类型: * 类,接口,数组; * * 接口是一种引用数据类型,可以看作是一个特殊的类,它存在的目的是为了解决没有多重继承引起的功能弱的问题而设计的,一个类只能有一个父类,但是这个类却可以实现多个接口; * * 接口还可以看作是只有抽象方法的类,即接口的所有方法都必须被实现; * 接口声明的关键字是interface,代替了class;而普通类的继承关键字extends也变成了implements(实现); * 但是其作用和普通类中是一样的,只不过是为了区分而已; *

JavaSE复习日记 : java包机制

这里是第一个文件,命名为JavaSE_01.java,我在这个文件里面声明了一个m1()方法,通过包机制,我将在另外一个文件夹里访问这个文件里的东西,确切的说是访问这个文件生成的一个class文件; package com.jaovo.webTeah.db; /* * Java包机制 * * 也就是软件包机制,软件世界中的两大难题:命名和缓存; * * 在程序命名中取一个言简意赅的名字很难,有时候名字取出来发现这个名字已经存在,包括IP,域名,MAC地址冲突等,在计算机中都出现了命名冲突的问题,

JavaSE复习日记 : 条件判断语句

/* 条件控制语句:if(){}else{} 语法: 第一种结构:有不执行的情况 if(boolean表达式){ //第一位真,就执行里面的语句,为假就不执行 java语句; } 第二种结构: if(boolean表达式){ java语句; }else{ java语句; } 第三种结构:多个条件判别式,有不执行情况 if(boolean表达式){ java语句; }else if(boolean表达式){ java语句; }else if(boolean表达式){ java语句; }else i

JavaSE复习日记 : 八种基本数据类型

/* * 基本数据类型 * * Java里的8种基本数据类型: * byte --- 1 byte = 8 bit; * short --- 2 byte = 16 bit; * int --- 4 byte = 32 bit; * long --- 8 byte = 64 bit; * * float --- 浮点型,32位的空间,数据表示形式是小数(如:3.0) * double --- 浮点型,64位的空间,数据表示形式是小数 * char --- 字符型,char型数据占用两个字节 2