黑马程序员—面向对象与类

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

学习面向对象

第一阶段,明白面向对象的基本概念。

首先我们要知道它是什么,它是一种思想。这种思想较从前有极大的不同之处。比如c语言,我们叫它面向过程语言,为什么这么说。是因为

它的特质是逢山开路,遇水架桥。也就是说处理问题侧重于过程,较为繁琐。而Java语言是面向对象语言。面向对象,也是面向结果的一种语言,

将一些繁琐的问题变的简洁明了。

为什么称Java为面向对象语言呢?因为面向对象是相对于面向过程而言的。

面向过程:关注的是做某件事情的过程。

面向对象:关注事情的结果。

面向对象思想特点:
A:是一种符合人们思考习惯的思想的语言。
B:将复杂的问题简单化。
C:把我们从以前的执行者变成指挥者。

举例:
例如旅游:

面向过程:查路线--买机票--选酒店--...--看景点...--回家。

——这个过程中我们需要不断的处理中间的各个环节产生的问题,最终完成了一趟旅行,繁琐!

面向对象:找个旅行社。

——而面向对象思想,将问题交给对象去解决。

再例如吃饭:
——面向过程:买菜--洗菜--做菜--吃菜--刷碗--拖地...

——面向对象:去饭店--点菜--吃

 在对面向对象有了一个模糊的认识以后,要开始学着应用面向对象。

面向对象的成立

面向对象:如何能做到面向对象呢?(UML 统一建模语言)
在分析问题的时候,采用如下方案:
        1:分析有哪些类。
        2:分析类有哪些内容。
        3:分析类与类的关系。

学到这里,我们知道了面向对象是建立在类之上,类是什么呢?

类是通过现实世界事物的体现。通过两点方式体现出来:

        1特征描述,描述有哪些属性。例如一个人,有其姓名,年龄等基本信息。

        2行为描述,描述有哪些功能,或者说能做什么,例如人,可以睡觉行走,可以奔跑进食等。

而如何用Java语言来体现,就得把现实世界的事物通过Java的内容给描述出来: 类事物的特征描述——成员变量(属性,字段)

                                                                                                                                                事物的行为描述——成员方法(函数)

类与对象的关系

类:是对生活中一类事物的抽象
学生类
对象:就是该类事物的具体存在
张三

Java中代码的具体体现

/** 
需求:定义一个汽车类,要求具备汽车的品牌,颜色,价格,并且让汽车行驶起来(即打印出每个汽车的颜色、价格) 
        
思路: 
    1创建一个汽车类
    2在main方法中创建一个汽车对象,并实现其功能 
    
*/
class Car   //这是汽车类,一个汽车的抽象
{  
    String name;  
    String color;  
    int price;  
    Car(String name,String color,int price)  
    {  
        this.name = name;  
        this.color = color;  
        this.price=price;    
        System.out.println(name + "是一辆" + color + ",价格是:" + nums);  
    }  
      
    public void run (Car c)  
    {  
        System.out.println();  
    }  
}  
  
class CarDemo  //实例化一个汽车
{  
    public static void main(String[] args)   
    {  
        Car c = new Car("volovo","黑色的",6000);  
     
        c.run(); 
    }  
}

上述的例子中,简单描述了一个类的产生。

面向对象的特点

1:封装

定义:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

优点:1将变化隔离

                2提高重用性

                3便于使用

                4提高安全性

封装的原则:将不需要对外公开的内容都隐藏起来,属性隐藏,提供公共方法进行访问。

注意:私有仅仅是封装的一种体现形式,包也是封装的一种表现形式,而之所以提供对外访问的方式,是因为可以对访问方式添加一些逻辑判断,对访问的数据进行

一些操作,提高了代码的健壮性(鲁棒性)。

2:继承

定义:把多个类中的共性的内容进行抽取,以后创建类的时候, 不需要从头开始,可以直接和抽取的类产生一个关系, 这个关系就是继承。

抽取出来的形成的类就是父类,也叫基类和超类。而继承它的就的子类,也叫派生类。

优点: 1提高了代码的复用性。

                2让类与类之间产生了关系,是多态的前提。

继承特点: 1 Java中继承只支持单继承。

                        2 Java中继承支持多(层)重继承。

继承格式: 父类:class FuClass{}
子类:class ZiClass extends FuClass{}

成员特点: 1 成员变量:在子类方法中使用一个变量的步骤。

                                a:在子类局部范围找,有就使用
                                b:接着在子类成员范围找,有就使用
                                c:再接着在父类的成员范围找,有就使用
                                d:报错。

                        2 构造方法:子类的构造方法执行的时候,会首先去执行父类的构造方法。因为子类要使用父类的内容,所有需要首先对父类的内容进行初始化。

                                注意:当父类没有无参构造的时候,子类要么用super调用父类带参数构造,要么使用this调用本身的其构造。

                                 Object类: 是所有类的超类,任何类都直接或者间接继承自Object类。

                        3 成员方法: 当子类出现和父类一模一样的方法时,父类的方法就会被子类覆盖调用。这种情况被称为方法的重写。(覆盖,重写,复写)。

注意:   a:父类私有的方法不能被重写。
                b:子类重写父类方法时,访问权限一定要大于等于父类权限。
                c:静态只能重写静态。(不属于对象的范畴)

        用子类对象调用方法时:
                a:在子类中找方法,有就使用。
                b:在父类中找方法,有就使用。
                c:报错。

this和super的区别 this:当前类的对象的引用。
super:父类的存储空间标识。

作用: this的使用: this(...);

                this.成员变量;

                this.成员方法();

        super的使用:super(...);

        super.成员变量
        super.成员方法()
 ;

3:多态

定义:同一个对象,在不同时刻表现出来的不同状态。

多态的前提:1 有继承或者实现关系。

                        2 有方法的重写。

                        3 有父类或者接口指向子类引用对象。

多态中的成员使用特点:Fu f = new Zi();

                                                System.out.println(f.num);

                                                f.show();

成员变量特点:编译看左边,运行看左边。

成员方法的特点:编译看左边,运行看右边。

多态的转型:向上转型:把子类对象赋值给父类(接口)的引用

向下转型:把父类(接口)的引用强制转换成子类对象

多态的好处和弊端:

        好处:提高的程序的可维护性和可扩展性。

                开闭原则:对扩展开放,对修改关闭。

        弊端:不能使用子类特有的内容。

                要想使用,要么向下转型,要么重新创建子类对象。

多态的三种形式:     1 具体的类多态。

                                2 抽象类多态。

                                3 接口多态。

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------详细请查看:http://edu.youkuaiyun.com
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值