} } }

    面向对象

    添加时间:2013-7-31 点击量:

    面向对象:



    面向对象是一种对实际世界懂得和抽象的办法,也是一种法度设计范型。


    类与对象:


     类: 类就是对象的凑集。


    对象:用实际世界来默示,万物皆是对象


    关系:类是对象的抽象,对象是类的实体。


    差别:类是不存在的,对象是存在的


    面向对象的特点:


    1、封装


    2、持续


    3、多态


     


    用代码默示什么是类呢?


     



     1 /
    
    2 人类
    3 /
    4 public class Person
    5 {
    6 /
    7 这些称为字段
    8 /
    9 String name;//姓名
    10 int height; //身高
    11 String sex;//性别
    12
    13 /
    14 这些叫行动
    15 /
    16 public void eat()
    17 {
    18 System.out.println(吃饭);
    19 }
    20 public void walk()
    21 {
    22 System.out.println(走路);
    23 }
    24 }


     


    那用代码默示什么是对象呢?


    对象就是类的实例,须要经由过程new关键字来实例化.....



    1 //经由过程new关键字来创建对象
    
    2 Person p = new Person();
    3 // p 就是对象了 p=小明,小明就是人类的此中一个对象
    4 /
    5 描述对象
    6 /
    7 p.height=175;
    8 p.name=小明;
    9 p.sex=男;


     封装


     封装(encapsulation)它指的是用private润饰符将对象的状况信息隐蔽在对象内部,不容许外部法度直接接见对象,而是经由过程该类所供给的办法来实现对的操纵和接见。如许做进步了代码的安然性......


    那private润饰符是什么意思呢?  


    它的意思默示私有化.......用它来润饰的成员变量后,只能类内才干接见这些成员变量。


    那么外界不克不及接见这些成员变量,那该怎么办呢?不克不及怎么办,只能在类内定义getter/setter办法供给给外界接见这些成员变量


    getter:就是取成员变量的值的意思


    setter:就是给成员变量赋值的意思


    下面我用代码演示:



     1     private String name;
    
    2 /
    3 这个getName()办法只是返回成员变量的值,
    4 并且返回类型必须和成员变量的类型一致
    5 /
    6 public String getName() {
    7 return name;
    8 }
    9 /
    10 这个setName(String name)办法就是给成员变量赋值的意思,
    11 那么办法的形参的类型也是要跟成员变量的类型一致,没有返回值
    12 并且接见润饰符只能是public,因为是供给给外界应用
    13 /
    14 public void setName(String name) {
    15 this.name = name;
    16 }


    持续


    持续(Inheritance)是面向对象软件技巧傍边的一个概念,指的是一个类A持续类B,那么我们就把类B成为是类A的父类或者基类。持续可以使得子类具有父类的各类字段与办法,而不须要再编写同样的代码,在令子类持续父类的同时,可以从头定义某些属性,并重写某些办法,即覆盖父类的原有字段和办法,使其获得与父类不合的功能,然则子类也可以定义属于本身的字段与办法。持续的益处就是代码的反复应用,进步开辟的效力。。。


    那么我们是如何持续的呢?


    是经由过程extends关键字来持续的,并且每一个子类只有一个直接父类,比如一小我只能有一个亲生爸爸。若是一个类没有显示的写出持续其它类,那么这个类的父类默认就是Object,在Java中所有类都是持续于Object类,也就是说Object类默认是所有类的父类,比如 类A持续了类B 那么类B就是类A的直接父类,而Object是类A的间接父类。子类不克不及持续父类中接见权限为private的成员变量和办法。子类可以重写父类的办法,及定名与父类同名的成员变量。但Java不支撑多重持续,即一个类从多个超类派生的才能。


    代码演示:



     1 /
    
    2 人类 是学生和教员的父类
    3 /
    4 class Person // class Person = class Person extends Object Person的直接父类是Object
    5 {
    6 String name;//姓名
    7 int age;//春秋 //在持续中父类的字段和办法、机关办法都不克不及用private润饰符来润饰,不然子类就不克不及持续了
    8 String gender;//性别
    9 /
    10 这里定义的字段都是学生和教员所拥有的.....所以可以把它们定义在父类中,就不消学生类和教员累也写姓名、春秋、性别了,
    11 不然就会形成代码的冗余了
    12 /
    13 }
    14 /
    15 学生 是人类的子类
    16 /
    17 class Student extends Person //学生类持续人类 是以这里的Student类的直接父类是Person类
    18 {
    19 int studentNo;//学号 这个学号为什么不放到父类中呢? 因为学号的话应当是学生才会有学号,而不是每小我都邑有学号的
    20 }
    21 /
    22 教员 是人类的子类
    23 /
    24 class Teacher extends Person //教员类持续人类 是以这里的Teacher类的直接父类是Person类
    25 {
    26 int teacherNo;//工号
    27 }


    多态




    多态(英语:Polymorphism),是指面向对象法度运行时,雷同的信息可能会送给多个不合的类型之对象,而体系可根据对象所属类型,激发对应类型的办法,而有不合的行动。简单来说,所谓多态意指雷同的信息赐与不合的对象会激发不合的动作。在面向对象法度设计中,多态一般指子类型多态(Subtype polymorphism)。


    例子


    比如在动物园里有动物动物之中有狗、羊、猫等等,它们都有”叫()”这个办法固然他们都是同类然则叫法却不一样,当练习师叫它们发出叫声的时辰狗是 汪汪叫(),羊是 咩咩叫(),猫是 喵喵叫()。这就是“多态”,收到同样的信息,获得不合响应.......


    代码列子:


     



     1 /
    
    2 动物类
    3 /
    4 class Animal
    5 {
    6 public void shout()
    7 {
    8 System.out.println(叫);
    9 }
    10 }
    11 /
    12 猫类
    13 /
    14 class Cat extends Animal
    15 {
    16 public void shout()
    17 {
    18 System.out.println(喵喵叫);
    19 }
    20 }
    21 /
    22 狗类
    23 /
    24 class Dog extends Animal
    25 {
    26 public void shout()
    27 {
    28 System.out.println(汪汪叫);
    29 }
    30 }



    读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
    分享到: