黑马程序员---------Java基础知识:面向对象
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
以前学过一些C和C++,他们的语法都和java都差不多,也就不写了,这第一篇就从什么是面向对象,还有Java程序编写中注意的一些问题开始写起。
一:什么是面向对象?
面向对象是一种思维方式,将功能封装进对象当中,在实现目标的时候只需调用对象的方法就可以。跟面向过程的区别在于,面向对象看重的是对象,而面向过程看重的是实现的过程。在学习视频上,老师讲的是把大象关进冰箱的事例。面向过程的重点在于把大象关进冰箱的过程,而面向对象则是关注大象和冰箱两个对象,在面向对象的概念里,冰箱有可以放东西的属性,大象是个物品有被移动的属性。完成就大象放入冰箱,则是调用冰箱可以放东西的属性,将大象放入冰箱内,而不用管冰箱是怎么样把那么大的大象放进去的。
面向对象的开发和设计是指:面向对象的开发过程就是不断的创建对象,并使用对象的方法做事情。面向对象的设计过程就是在管理和维护对象之间的关系。
二:面向对象的三个特征
面向对象有三个特征如下
1:封装
隐藏对象的属性和实现细节,仅对外提供公共访问方式。
有四个好处:
将变化隔离:因为只提供了公共访问方式,内部的变化外部是无法了解的。
便于使用:封装后,我们只需知道怎么用,不需要知道怎么实现,方便了使用。
提高重用性:封装后可以重复使用。
提高安全性:因为封装了,所以源代码不可以随意修改,提高了安全性。
封装的原则:
将不需要对外提供的内容隐藏起来。
把属性隐藏,提供公共方法对其访问。
2:继承
存在于两个类之间的一种关系。当一个类继承了另一个类的时,他就可以拥有父类中所有的非私有属性和方法。
3:多态
多态分为方法的重载和重写,
重载是指方法的名和返回类型相同,但是参数不同.重写是指子类继承父类的方法,但是在子类自己类体里边又写了一个方法, 跟父类中的方法名,返回类型,参数列表都完全一样,但是方法体不同,也就是说它有自己的实现方式.这就是重写.
三:类的定义:
类就是描述实物的属性和行为。Java中用来class来描述事物,成员变量对应的是属性,而成员函数则为行为。在程序当中,通过调用类中的方法实现目标。
四:变量
在Java中有两种变量:成员变量和局部变量。
成员变量:
成员变量定义在类当中,在整个类当中都能被调用,成员变量随着对象的建立而建立,存在于对象当中。成员变量是默认初始化的。
局部变量:
局部变量只定义子啊局部范围之内,如函数,语句内。局部变量是存在于栈内存当中。作用范围结束则变量空间自动释放。局部变量没有默认初始化。
示例:
class Car//定义一个类,必须要class修饰,Car则是类名,每个单词的首字母大写
{
Stringcolor ="red";//定义成员变量,分号表示结束这句话,并且是英文输入法下的分号
intnum=4;
publicvoid show()//函数,第一个单词首字母小写,后面每个单词首字母大写
{
System.out.println("color:"+color+"number:"+num);//语句,这句语句数输出语句
}
publicint getSum(int a,int b)
{
int sum =a+b;
return sum;
}
}
class CarDemo //定义一个类,必须要class修饰,CarDemo则是类名,每个单词的首字母大写
{
publicstatic void main(String[] args)
{
Carc= new Car();//建立对象,建立对象后可以使用对象内函数,可以对对象属性进行修改
c.color="black";//改属性
c.show();//调用对象函数
intsum = c. getSum(5,6);
System.out.println(sum);//语句,这句语句数输出语句
}
}
在写一段Java程序时需要注意以下几个地方。
1. 一般来说一个JAVA文本上只有一个main()函数。main()函数格式固定为public static voidmain(String[] args){ /*要实现的功能*/ }。
2. 一个文本里面可以有无数个类,每个类里面都可以定义函数。函数的调用必须创建了对象后才可以调用类中的函数。
3. 书写规范,类名每个单词的首字母大写,其余小写,函数首字母小写,其余单词首字母大写。
4. void函数可以不然后任何数据,非void函数必须有数据返回,int 类型返回 int 类型数据,String 类型返回字符串,函数名前写的是什么类型,则需要用return返回什么类型的数据。
5. 参数列表,函数在定义时,很多时候需要外部传入某些参数,所以有参数列表的存在。public int getSum(int a,int b) 中,(int a,int b)是函数的参数列表,传入的是两个int类型的参数,假如数(inta,int b,String c)则是需要传入三个参数,分别是int ,int ,String类型,假如类型放错则编译器报错。