对于Java转型的一些个人理解
2016-09-19 20:13
232 查看
今天因为在听课的时候涉及到了一个java转型的问题,自己的理解不深,所以就到网上收集和看了一些资料, 在这里对自己的一些理解做一个记录,欢迎指错,欢迎纠正,求进步。 在java中经常可以见到一些转型的问题,这涉及到java的一些抽象编程思想,这其中向上转型更加常见,是多态的一种体现。 **转型:就是父类对象和子类对象之间的一个转换的过程。** 子类对象指向父类对象的引用就是向上转型,这其中会丢失除父类含有的属性及方法外其他的方法和属性, 虽然存在弊端,但是也大大的提高了代码的复用度。
public class A { public void test(){ System.out.println("A"); } } public class B extends A { @Override public void test() { System.out.println("B"); } } public class C extends A { @Override public void test() { System.out.println("C"); } } public class Test { public static void main(String[] args) { B b = new B(); b.test(); C c = new C(); c.test(); testDemo(b); testDemo(c); } private static void testDemo(C c) { c.test(); } private static void testDemo(B b) { b.test(); } }
可以看到在上面的代码中,为了适应不同的参数testDemo方法出现了两次,如果有更多的类来继承A 那么是否需要更多的testDemo方法,这时候向上转型就大大的发挥了作用
public class Test { public static void main(String[] args) { B b = new B(); b.test(); C c = new C(); c.test(); testDemo(b); testDemo(c); } private static void testDemo(A a) { a.test(); } }
很明显下面的代码比上面的简洁很多,因为B和C都是继承A的类,那么用一个A的对象来承接来自B和C的对象的引用,调用的还是在B类和C类中重写了的test方法,这就是向上转型,向上转型不需要强制转换,但是会丢失除被继承类中方法外的其他方法。
如果想使用子类的方法,那么就需要向下转型,不过向下转型并不常用,因为向下转型经常会抛出异常,要用instanceof处理后才能使用,并且需要显式的强制转换。
子类名 子类对象名 = (子类名)父类对象;
个人认为向下转型一般多用在向上转型之后,这样一是可以保证安全,二是可以更加方便,更适应java抽象编程,不推荐单独使用。
相关文章推荐
- java 中对于接口的理解和我对java 的一些理解
- 个人对于套接字的一些理解!
- 个人对于OO的一些理解
- 对于C/C++,java的volatile关键字的个人理解
- 个人对于补码的一些理解
- 对于java线程的一些理解
- 对于java中的native方法的一些理解
- Java关于个人对于Socket的理解,Socket多线程批量上传文件,适合新手
- 个人对于JAVA异常的理解
- java2集合框架的一些个人分析和理解
- 对于java 集合的一些理解
- 对于angular 中MVC 和 MVVM 的一些个人理解
- 对于AOP切面编程的一些个人理解
- 黑马程序员——个人对JAVA反射的一些理解
- 个人对于Java8的一些新特性总结
- 个人对于OO的一些理解
- 对于CN Payroll我的一些个人理解
- java--对于上转型的一些总结,适合新手看
- 对于NHibernate中延迟加载个人的一些理解
- 关于JavaBean的一些理解