您的位置:首页 > 编程语言 > Java开发

Java学习笔记-继承

2016-03-16 22:36 337 查看
一、多态

---1》对象变量是多态的:
一个类对象既可以引用本类对象,也可以引用子类对象:Employee
e;e=new Employee()或e=new Manager();

--->这种多态不能反转

---2》动态绑定:

****再覆盖一个方法是,子类方法不能低于超类方法的可见性,即,超类是public,子类必须是public(而不能是private)

---3》阻止继承:final的类和方法

---4》强制类型转换

****只能在继承层次内进行转换

****将超类转换成子类之前,应该使用instanceof进行检查

---5》抽象类

****位于最顶层的类实际上更具有通用性,此时我们只需要这样一个作为派生其他类的基类,而不作为实例类。(只有壳没有内容)

****为了清晰度,包含抽象方法的类必须是抽象类

****抽象方法只声明,并不实现内容,即只是为了占个位置,让子类去继承。

****抽象类不能被实例化。
**《是否可以省略抽象类的抽象方法》**

----不能,由于persion
p=new Student();此时类persion引用一个Student对象,当通过p.getname()来调用Student的姓名时,由于persion没有getname方法,会出现错误!!

二、Object:所有类的超类

---1》equals()方法:判断两个对象是否具有相同的引用

---2》hashCode()方法:由于散列码是由本身内容决定,所以equals相同,hashCode一定相同,而反过来却不一定。

---3》如果重新定义equals方法,就必须重新定义hashCode方法,以便用户将对象插入到散列表中。

三、对象包装器与自动装箱
---1》8个基本类型的引用类型就是包装器(如Integer、Double)

---2》自动装箱规范要求boolean、byte、char<=127,以及介于-128~127之间的short、int被包装到固定对象
例:Integer a=1000;integer b=1000;结果是a!=b;

但将1000改为100就成立,因为1000不在固定包装对象中,所以ab会同时构造两个值为1000的integer对象。
《拆箱和装箱是编译器认可的,而不是虚拟机》

---3》将字符串转化为整型:int
x=Integer.parseInt(s);

---4》参数数量可变的方法:

****int
method(double...values),三个点表示有多个参数

四、反射
---1》反射库提供了大量的工具类,以便能够动态操作Java代码,这个功能被大量使用于javabeans中,能够分析类能力的程序称为反射。

---2》object类的getClass()方法会返回一个**Class类型**的实例

如:Employee
e;Class c1=e.gteetClass();

---3》getName()方法返回类的名字

如:e.getClass().getName(Sting
s);

---4》还可以调用forName()方法获取类名对应的Class对象

如:Class
c1=Class.forName("java.util.Date");

---5》快速创建类的实例newInstance()方法

如:e.getClass.newInstance();或Class.foeName("string").newInstance()

---6》捕获异常(待补充)

五、继承的设计技巧

---1》将公共操作和域放在超类

---2》不要使用受保护的域

---3》使用继承实现“is-a”关系

---4》除非所有的继承方法都有意义,否则不要使用继承

****由于子类会继承超类的所有方法,当超类存在会破坏子类规范的方法时,子类的使用可能会出现错误
如:persion会走会跑,cat继承persion这些方法是对的,但人有讲话方法say,当使用cat.say()时,使用是对的,但不符合逻辑。

---5》再覆盖方法时,不要改变预期的行为

****只是个建议:是为了让方法单词所表达的意思尽量和逻辑一致,如定义一个mytime()方法,继承time方法,当操作mytime()-time()时,应该得出一个计算数值,二当我们改变mytime()的返回方法为persion时,这就不复合逻辑了《其实关键在于不偏离最初的设计就行》

---6》使用多态,而非类型信息(缩减代码量)

---7》不要过多的使用反射

--反射适用于编写系统程序,但不适用于编写应用程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: