每周总结9
1.注释
太好了,注释在idea里面也是可以缩合而非展开,就可以节省很多空间增加可读性了。
有需求时再给他展开。
package com.XGX.LinkedListTest;
import java.util.*;
import com.XGX.LLLinkedList.*;//这样子导包总算好了。直接复制粘贴包的地址然后换import,再写具体类名或者*按需导入。
import com.XGX.Father.*;
import com.XGX.JieDian.*;//全给你导包进来,果然没有问题了。
//继承关系回顾。 LKL和JD 都是继承自Father的,但是之间用了导入包建立联系。
//LinkedList1中含有静态static对象 LKL;
//凡是调用LL中方法,皆以LinkedList1.LKL
public class LinkedListTest{//测试用类,主类
public static void main(String[] args){
Scanner in = new Scanner(System.in);
//Test1
//LinkedList l1 = new Father();//用Father的构造方法区构造子类,父类转子不可以.
Father l1 = new Father();//方便测试用例
//
//太好了,注释在idea里面也是可以缩合而非展开,就可以节省很多空间增加可读性了。
//有需求时再给他展开。
//Father l1 = new LinkedList1();//这是合法的。
//父类型引用 指向 子类型对象。此时调用Print方法是调用子类中的,先编译静态绑定父类,再运行动态绑定子类。多态
//只有在继承的情况下,栈堆类型可以不一致,却还能建立联系。(与栈无联系的对象会被立刻回收)
//( (LinkedList)l1).Print();//用了中文括号就错 了,二者所占空间还是有差别的,半角和全角符号的感觉。
// ? ? ? ( (LinkedList)l1).Print();//为什么还是编译过不了,看不懂 ???
//实验失败,开始测试LinkedList本身。
//Test2
Father l2 = new LinkedList1();//父类型引用指向子类型对象。
//
JieDian l = new JieDian();//好像无法识别这个JD.
//LinkedList1 son1 = new Father();这样是不行的。
/*int a = 1;
double b = 1;
b = a;//这个是可行的
//a = b;//这个是不可行的。int类型可以自动转化为double类型,但是double不可以自己转化为int
//小可以转大,大转小只能强制转换给他塞进去然后损失精度(分配的内存空间大小不一样)
*/
//也就是说,儿子可以转化成父类,但是父类不可以转化为子类。要强制转换。父类比子类抽象比子类范围大,子类比父类具体比父类范围小。
//存个小疑问,这里内存空间难道不一样?
//LKL.create(10);//这样不行
JieDian JD1 = LinkedList1.LKL.create(10);
LinkedList1.LKL.Printf(JD1);//打印链表,然后这里可以试试重写toString?但是感觉没必要。
}
}
代码测试
输入20 20 20后删除,输入1-10;
结果 20 20 20 1-7,
证明像println()这种方法不接受delete,是直接读取键盘的缓冲区的。
这里输入用空格分隔也可以,回车分隔也可以。
只要读数读满10个再加上回车就会执行下一步。
多于要求的输入数据都是无效命令会被浪费。
2.如何获得类名
import java.lang.*;
导入lang包。
然后Class a = this.getClass();//搞一个引用类型指向你现在的类,调用getClass()方法。
然后给你的类new一个对象b.
System.out.println(b.getname());//就可以显示你调用的类名了。