------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!--------
一.面向对象概述
面向对象就是相对面向过程而言的,两者都是一种思想,就看自己怎么想了,面向对象是基于面向过程的。就拿生活中的一个例子来说—>打的,面向过程的步骤是先拦住出租车,然后打开车门,最后坐上车,一步一步的执行,而面向过程是强调具有功能的出租车:出租车停止,出租车门打开,出租车座椅坐人。感觉就是面向过程是自己在做,面向对象是指挥对象去做。
面向对象的特点:
1. 是一种符合人们思考习惯的思想
2. 可以将复杂的事情简单化
3.角色从执行者转换成了指挥者
面向对象有三大特征:封装、继承和多态。在Java的开发过程,其实就是不断的创建对象,使用对象,然后指挥对象做事情。
二.正文
1、类和对象
类是面向对象的重要内容,我们可以把类当成一种自定义数据类型,可以使用类来定义变量,也就是说,所有类都是引用数据类型。
1.1 定义类
类可以被认为是某一类事物的抽象概念,对象是某一类事物中的具体存在的实体,比如我们日常说的人就是类,而具体的某个人就可以看做是对象。定义类的简单语法如下:
[修饰符] class 类名
{
零到多个成员变量。。。。。。
零到多个构造器。。。。。。
零到多个方法。。。。。。
}
其中修饰符可以是public、final和abstract,或者完全省略这三个修饰符,类名要求是一个合法的标识符,但是从程序的可读性来看,类名必须是一个或多个有意义的单词连接而成,并且每个单词的首字母大写,其他字母全小写,单词之间不要有任何分隔符。
对定义一个类而言,可以包含三种最常见的成员:构造器、成员变量和方法,三个成员都可以定义零个到多个。下面是定义方法的格式:
[修饰符] 方法返回值类型 方法名(形参列表)
{
零到多条可执行语句组成方法体
}
修饰符:其中修饰符可以省略,也可以是public、protected、private、static、final和abstract,其中public、protected和private三个最多只能出现一个;abstract和final最多出现其中之一,它们可以与static组合来修饰方法。
方法返回值:返回值类型可以是java允许的任何数据类型,如果声明了返回值类型,方法体中必须包含一个有效的return,如果没有,则必须使用void来声明返回值。
方法名:方法名的命名规则通常是以英文中的动词开头。
形参列表:用于定义该方法可以接受的参数,可以有零组和多组“参数类型 形参名”组合而成,多组参数之间用英文逗号隔开。
方法体中多条可执行语句从上到下依次执行。
构造器是一个特殊方法,格式如下:
[修饰符] 构造器名(形参列表)
{
零到多条可执行语句组成方法体
}
修饰符:修饰符可以省略,也可以是public、protected、private其中之一。
构造器名:必须和类名相同。
形参列表:和定义方法形参列表相同。
注意:构造器不能定义返回值类型,也不能使用void,如果定义了返回值,java会把它当成方法处理。
1.2 对象的产生和使用
创建对象的根本途径是构造器,通过new关键字来调用某个类的构造器即可创建该类的实例。比如:Person p = new Person();如果权限允许的话,就可以通过实例来调用定义的成员变量和方法。语法如下:实例 . 成员变量/方法。
2、隐藏和封装
封装是把对象的的状态信息藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。对一个对象封装,可以实现以下目的:
1、隐藏类里的实现细节。
2、让使用者只能通过实现预定好的方法访问数据,从而可以在该方法中加入逻辑语句,提高程序的健壮性。
3 、便于修改,提高了代码的可维护性。
4、 可进行数据检查,保证对象信息的完整性。
下面是一个简单的例子:
class A{
public run(){
System.out.println("A");
}
}
//B继承A
class B extends A{
int num=0;
public function(){
System.out.println("B");
}
}
//建立测试类C
public class C{
public static void main(String aa[]){
//new 一个对象B()
B b = new B();
b.run();
b.function();
}
}
上面代码先是创建A类,然后用B去继承A,,最后在测试类C中生成B的对象b,由于继承的关系,b就可以调用A的run方法了。
继承的分类:继承分为单继承和多重继承。单继承是指一个子类最多只能有一个父类。多继承是一个子类可以有二个以上的父类。在实际应用中应尽量使用单继承。Java中的类只支持单继承, 而多继承的功能是通过接口interface来间接实现的。
重写:子类继承了父类,它就成了一个特殊的父类。在子类当中就可以重写父类当中的方法,要求是方法名和形参列表相同,返回值类型比父类的返回值类型更小或相等,权限比父类的访问权限更大或相等。
注意:子类的构造方法中默认有父类的无參构造方法;子类中可以使用super(形参列表)调用父类对应的构造方法。
4、 多态
Java引用变量有两个类型:编译时类型和运行时类型。如果编译时类型和运行时类型不一致,就可能出现了所谓的多态。
1、多态的体现:
A 向上转型:子类对象赋值给父类对象引用。代码例子如下:
class A
{
}
class B extends A
{
}
A b = new B();
B 向下转型:将父类对象赋值给子类引用。代码例子如下:
class A
{
}
class B extends A
{
}
A b = new B();
B c = (B)b;
2、多态的前提
必须是类与类之间的关系,要么继承或实现
通常还有一个前提,存在覆盖
3、多态的好处
多态的出现大大的提高了程序的扩展性
4、多态的弊端
只能使用父类的引用访问父类的成员
注意:向上转型后父类引用只能调用自己拥有的方法,不能调用子类特有方法,并且调用方法具体执行的是子类的方法体,但调用成员变量用的是父类自身的成员变量。
三.总结
这篇博文从概念上介绍了什么是面向对象的思维,并介绍了怎么定义类和创建对象,重点介绍了面向对象的三个特征即封装、继承和多态的基本概念,以及一些注意事项。
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!--------