java-面向对象

总所周知,java是一门面向对象的编程语言。java面向对象的三大特性就是
继承,封装,多态
当然,java里面也有些不是面向对象的语法,比如我们说的基本数据类型:int,short,double…他们都是面向过程的。但在java里为了保持一致,又有了integer类,Long类等等。
非常常见的有:

int[] arr=new int[]{1,2,3};
int a=new Integer(1);//这在jdk5.0之后会实现自动转换,将基本数据类型也变成了一个类

我们常常会将int和long类型的数据进行转换,但是不能将Integer和Long类型的对象进行复制转换,不用说也知道为什么吧,他们两个并没有继承的关系,类与类之间能否转换也要看是否有继承的关系

类:抽象
我们将万事万物都可以抽象成一个类,

上课的时候老司机讲到java程序员形容自己的感情:“我可以把万事万物都抽象成类,却无法抽象出我对你的思念。”我写的时候看到满屏的油腻,啧啧啧

例如学校的学生都有姓名,班级,学号等等,都有吃饭,学习这些共同的方法,这就可以抽象成一个类…
那么,你可能会问了,既然万事万物都可以抽象成一个类,那么所有的类可不可以抽象成一个类呢?
答案是毫无疑问的,他们可以抽象成一个类Class,后面的反射中在来总结。

对象:实例化
我们把具体的Student的对象代表着一个学生,姓名是小明,性别男,有着这个类所有的属性和方法。这就是实例化
继承:
1.子类继承父类的成员和方法,但是构造器不能继承。
2.并且在java类中是单继承的,接口是多继承的

3.子类拥有父类的public,protected修饰的成员属性和方法,但是不能直接使用父类私有的成员属性或方法。那怎么才能用父类私有的属性呢?
我们可以直接在父类中定义一个方法,用这个方法返回一个私有的属性,再在子类中调用就行了。

4.说到继承不得不讲方法的重写重载
重写:重写是发生在类的继承中,子类重写父类存在的方法,定义子类特性的方法。
重载:方法的重载是写在同一个类中的同名字的类,虚拟机只通过判断方法名相同,参数列表(包括参数的类型,数量,顺序)的不同,和返回类型无关。

封装:
封装其实就是将一个实现某种功能的类变成一个输入参数得到相应结果的一个工具类。
主要是一些service类,业务类是会用到。

多态:
多态说起来就会有点抽象了。
首先在重写和重载里也用到了。重写是运行时多态,是指他只有在运行的时候才知道调用的到底是什么的方法。而重载则是编译时多态,在编译的时候JVM就会确定好调用的是哪个方法。
例如:
Object 0=new Student();
o.say();

Object是所有类的父类,我们创建了一个Object类型的Student对象,并且调用了子类的say()方法,这是一个典型的多态。
这里就会报错!!!为什么?因为在父类类型创建一个子类对象的时候,此时在java中调方法的是动态绑定的,他指向谁就和谁绑定。Object类在运行时候可以任意指向他的一个子类,父类的引用可以指向任意一个子类对象。所以能不能调用这个方法只看声明的类型里有没有这个方法,没有就不能调用,因为他不确定指向的子类里是否有这个方法

接口里也是有多态的,一个接口的引用可以指向任何一个实现类的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值