黑马程序员------Java基础学习------面向对象(上)

------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让使用者只能通过实现预定好的方法访问数据,从而可以在该方法中加入逻辑语句,提高程序的健壮性。

便于修改,提高了代码的可维护性。

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培训、期待与您交流!--------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值