父类是接口或者是抽象类,子类必须继承自父类。html
在Java中,经过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。在Java中不容许多继承。java
1.子类要为父类的私有属性单独的在堆里开辟空间,这个空间不属于任何一个对象,缘由是私有属性要使用必需要有个空间,并默认初始化,不会为父类的私有方法在堆里开辟空间,缘由是私有方法在方法区。
2.为子类开辟空间,为继承自父类的属性开辟空间,并为在父类里定义的、子类继承的方法开辟方法空间,而后为子类新增的方法开辟空间,(继承的方法的空间和新增的属性和方法的空间)
3.必定会把子类的对象地址传到父类的构造方法,调用父类的构造方法,到类里头绑定的属性寻找并初始化,为子类继承的属性私有化,和为子类不能继承的属性私有化。若父类的构造方法是私有的,则子类对象不能建立,编译会出错
4.调用子类的构造方法能够初始化子类新增的属性,和继承父类的属性和方法初始化。git
在Java的子类与父类中有两个名称、参数列表都相同的方法的状况。因为他们具备相同的方法签名,因此子类中的新方法将覆盖父类中原有的方法。编程
正是由于Java在继承中有方法的重写,因此,这也体现了Java的动态多态性。学习
继承:是对有着共同特性的多类事物,进行再抽象成一个类。这个类就是多类事物的父类。父类的意义在于抽取多类事物的共性。java中的继承要使用extends关键字,而且java中只容许单继承,也就是一个类只能有一个父类。测试
多态,把子类对象主观的看做是其父类型的对象,那么父类型就能够是不少种类型。实现多态,有二种方式,覆盖,重载。ui
关系:继承能够复用代码,更大的用处是实现「多态」
封装是继承的基础,继承是多态的基础
「用父类声明对象引用,用子类生成对象」就有了多态命令行
接口是功能的集合,一样可看作是一种数据类型,是比抽象类更为抽象的”类”。调试
接口只描述所应该具有的方法,并无具体实现,具体的实现由接口的实现类(至关于接口的子类)来完成。
接口中成员的特色code
一、接口中能够定义变量,可是变量必须有固定的修饰符修饰,public static final 因此接口中的变量也称之为常量,其值不能改变。后面咱们会讲解fnal关键字
二、接口中能够定义方法,方法也有固定的修饰符,public abstract
三、接口不能够建立对象。
四、子类必须覆盖掉接口中全部的抽象方法后,子类才能够实例化。不然子类是一个抽象类。
A:类与类之间:继承关系,一个类只能直接继承一个父类,可是支持多重继承
B:类与接口之间:只有实现关系,一个类能够实现多个接口
C:接口与接口之间:只有继承关系,一个接口能够继承多个接口
码云
0 在Ubuntu中用本身的有位学号建一个文件,教材p29 Example2_5
0 在Ubuntu中用本身的有位学号建一个文件,教材p45 Example3_7
参考http://www.cnblogs.com/rocedu/p/6766748.html 编程实现1!+2!+3!+... + N!的功能
N由命令行传入,好比类名为SumofRecur, java SumofRecur 8 给出1!+2!+3!+... + 8!的值
提交运行结果的截图(至少五张),注意测试正常,异常,边界状况, 好比java SumofRecur -8,java SumofRecur 0,java SumofRecur 你的学号后四位
命令行参数:Java程序运行时,会调用main方法,args就是命令行参数。
代码以下:
public class test3 { public static void main(String args[]){ int tmp[]=new int [args.length]; for(int i=0;i<args.length;i++){ tmp[i]=Integer.parseInt(args[i]); } long sum=0; if(tmp[0]<=0){ System.out.println("wrong!"); System.exit(0); } for(int i=1;i<=tmp[0];i++){ sum += fact(i); } System.out.println(sum); } public static long fact(int i) { if(i==1) return 1; else return i * fact(i-1); } }
把代码推送到
1 参考 http://www.cnblogs.com/rocedu/p/6371262.html 调试上一个程序
2 经过命令行传入3
3 提交N=1 , N=2, N=3时的结果截图
1,使用javac -g test3.java对程序进行编译。注意javac中-g参数是为了产生各类调试信息,必定要加上,不然没法调试。
2,使用jdb test3 N对程序进行调试
3,经过运行stop in test3.main命令在main方法开始处设置断点
4.输入run命令来运行test3.class,程序会在main()的开始处停下。能够用locals命令查看变量,用step命令运行下一行代码
5.使用quit或exit能够退出JDB。