面向对象
添加时间: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 }
读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
面向对象:
面向对象是一种对实际世界懂得和抽象的办法,也是一种法度设计范型。
类与对象:
类: 类就是对象的凑集。
对象:用实际世界来默示,万物皆是对象
关系:类是对象的抽象,对象是类的实体。
差别:类是不存在的,对象是存在的
面向对象的特点:
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 }