首页编程java编程java的上溯造型和下溯造型是什么 JAVA OOP上溯造型有什么好处

java的上溯造型和下溯造型是什么 JAVA OOP上溯造型有什么好处

编程之家2023-10-1387次浏览

各位老铁们好,相信很多人对java的上溯造型和下溯造型是什么都不是特别的了解,因此呢,今天就来为大家分享下关于java的上溯造型和下溯造型是什么以及JAVA OOP上溯造型有什么好处的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

java的上溯造型和下溯造型是什么 JAVA OOP上溯造型有什么好处

java 类型转换的原理是什么

java中的数据类型分为两种:基本类型、引用类型。基本数据类型没有什么好说的byte char short int long float double boolean,这些类型除了boolean之外,其他的与C语言中的类型没有太大的区别。因为这篇文章的论题是类型转换,所以在此不讨论boolean值的用法。下面要说的是引用类型。引用在有的书里也叫做句柄,它很类似C/C++中的指针,但要注意引用和指针并不是同一个概念。指针是一个存放地址的变量,他使C/C++程序员能够灵活地访问内存,但这也给程序的安全性带来了很大的隐患,由于程序员可以对指针随意的运算操作,所以一不留神就会破坏其他的存储单位,导致程序中出现意想不到的结果。引用继承了指针节省内存的优点,又限制了对地址的操作,所以他是安全的。引用类型包括所有类生成的实例和数组(不管是对象数组还是基本类型数组都实现Cloneable接口,所以他也是一个对象实例),所有引用类型都继承自Object这个类。要说明一点的是java中的所有变量都是一个引用,不管是引用类型还是基本类型。现在要正式讨论类型的转换了。用过C/C++的人对基本类型的转换都会很清楚,基本类型转换分为类型提升和强制转换。

例如:

int a=100;

java的上溯造型和下溯造型是什么 JAVA OOP上溯造型有什么好处

long

b=a+100;//这个地方就用到了类型提升,a+100从int提升到了long

a=(int)b;//这个地方用到了强制转换

java的上溯造型和下溯造型是什么 JAVA OOP上溯造型有什么好处

强制类型转换在某种情况下会丢失精度,如:

byte b;

int a=200;

b=(byte)a;//虽然这里用到了强制转换,但因为byte的范围是-127到127

//所以强制转换后宽度会被截短

在java中除了这些转换之外基本数据类型还可以被隐式的转换成String,例如:

System.out.print("转换"+100);//如果在数据前面有字符串用+连接

//就会隐式的转换成String

引用类型的转换实现起来要比C++简单的多,如果一个对象与另一个对象没有任何的继承关系,那么他们就不能进行类型转换。如果要把一个派生类对象赋值给基类对象这个称为上溯造型。如果要把基类对象赋值给派生类对象就需要强制类型转换,这称为下溯造型,下溯造型有一些危险,要安全的进行下溯造型有一个前题,基类对象必须是从派生类对象中上溯过来的。

例如:

class Base{}

class Child extends Base{

public static void main(String[] args){

Base base=new Child();//上溯造型

Child child=(Child)base;//下溯造型

Child child1=(Child)new

Base();//抛出ClassCastException异常

}

}

最后,谈一谈String与引用类型的转换。前面已经说过,所有的对象都是从Object继承过来的,Object中有一个toString方法。这个方法是所有的对象都可以转换成String,如果想把自定义的类转换成String,最安全的做法是重写toString方法。和基本类型一样如果对象前有String对象用+连接,对象就会隐式转换成String,这种情况实际上是隐式调用了toString方法。

JAVA OOP上溯造型有什么好处

面向对象的程序设计的优点面向对象的程序设计的优点

目前在软件开发行业,面向对象编程是比较流行的,java私塾(www.javass.cn)把面向对象的程序设计的优点列出来,给大家一个参考:

1.符合人们习惯的思维方法,便于分解大型的复杂多变的问题。由于对象对应于现实世界中的实体,因而可以很自然地按照现实世界中处理实体的方法来处理对象,软件开发者可以很方便地与问题提出者进行沟通和交流。

2.易于软件的维护和功能的增减。对象的封装性及对象之间的松散组合,都给软件的修改和维护带来了方便。

3.可重用性好。重复使用一个类(类是对象的定义,对象是类的实例化),可以比较方便地构造出软件系统,加上继承的方式,极大地提高了软件开发的效率。

4.与可视化技术相结合,改善了工作界面。随着基于图形界面操作系统的流行,面向对象的程序设计方法也将深入人心。它与可视化技术相结合,使人机界面进入GUI时代。

java语言的优点:

1.最为显著的优点是它与平台无关。Java依靠它的运行库(Run Time Library)获得了以往任何一种语言都没有的平台无关性。同样的代码可以不用改动就可在Windows、Solaris、Unix等各种软硬件平台上运行。

2.另外一个显著的优点是Java的类C++语法。Java从C++发展而来,对于当今世界上众多的c++程序员来说,Java显得并不陌生。

3.面向对象。Java语言是完全面向对象的,区别于C++的“半面向对象”。目前面向对象技术已经取代早期的结构化程序设计方法而成为计算机界的标准技术,因为事实证明面向对象技术处理复杂问题的优势远非其他方法所能及。

4.健壮。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大缩短了开发Java应用程序的周期。Java提供Null指针检测数组边界检测异常出口字节代码校验。

5.安全。java最重要的一点保证是:Java的安全体系架构。Java的安全性可从两个方面得到保证。一方面,在Java语言里,象指针和释放内存等C++功能被删除,避免了非法内存操作。另一方面,当Java用来创建浏览器时,语言功能和浏览器本身提供的功能结合起来,使它更安全。

6.多线程。简言之为一项任务多点开工,多线程带来的更大的好处是更好的交互性能和实时控制性能。在Java里,你可用一个单线程来调一副图片,而你可以访问HTML里的其它信息而不必等它。

7.动态。Java的动态特性是其面向对象设计方法的发展。它允许程序动态地装入运行过程中所需要的类,这是C++语言进行面向对象程序设计所无法实现的。

8.效率高。在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。

9.易扩展。由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。

java是目前最流行的语言不是没有道理的

关于java中用子类初始化父类对象的问题

>>为什么这里b2.x输出的值是10呢???

答:Java中方法为动态绑定,但是属性是静态绑定的,也就是说虽然b2指向的是一个Sub类对象,但是由于属性的静态绑定原则,b2本身作为base类型的对象他的属性x依然是base类中的x,这也可以说明:多态在面向对象中是针对方法而言的。

>>这和b2是base型有什么关系,b2是base型在这里有什么意义。

>>最好能举个例子。

答:b2作为base类型的对象,在面向对象语言中,父类类型的引用是可以指向子类类型的对象的,因此b2是base类型的引用指向sub类型的对象。如:

Collection c= new ArrayList();

这里的c也是这种情况。

>>顺便问一下溯造型是怎么回事?

我学Java这么长时间没听说过"溯造型"的概念,也可能是叫法不同,但是在我想你说的应该是类型转换的问题,在面向对象语言中子类对象可以直接转换变成父类对象,如Collection c=new ArrayList(),同时父类对象也可以通过强制类型转换变成父类对象,前提是父类对象的实际类型是子类对象,如:

Collection c1= new ArrayList();

Collection c2= new HashSet()

ArrayList a=(ArrayList)c1;//成功

ArrayList b=(ArrayList)c2;//失败

>>最后一个问事关于“上溯造型”的。

答案同上个问题

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

java什么叫参数?请问什么是Java中的参数。java 什么=new什么,java, 类名 x = new类名(); 后面这个new类名是什么意思