Fork me on GitHub

第7章 类和对象

 

1.什么是类和对象

1.1对象的概念

万物皆是对象,所有客观存在的物体都是对象

1.2什么是面向对象

把数以及对数据的操作方法放在一起,作为一个相互依存的整体,这个整体就是对象

1.3类

类是模子,是对象所有属性和方法的一个抽象集合
类的特点:
类是对象的类型,即对象的类型是类
具有相同属性和方法的一组对象的集合

1.4什么是对象的属性

属性——对象具有的各种特征,注意不是类哦
每个对象的每个属性都拥有特定值
例如一个手机,手机的大小,重量等就是手机这个对象的属性

1.5什么是对象的方法

方法——对象执行的操作
例如,手机这个对象有打电话,发短信,上网等一些方法

1.6类与对象的关系/区别

类是对象的抽象概念,是抽象的一个模板,对象是根据类来生成的。我们定义一个类,实际使用过程中,要创建一个对象,来操作这个对象,不能直接对类进行操作

2.如何定义Java中的类

2.1类的组成

一个类是由属性和方法构成的
所有的类都是以class为组织单元

2.2定义一个类的步骤:

a.定义一个类名
b.编写类的属性,属性可以有多个或者没有
c.编写类的方法,

 1 public class HelloWorld{
 2     public static void main(String[] args) {
 3         //定义类的属性
 4         String url_China = "甘美丽和卢小帅";
 5         String url_English = "www.ganhuanmin.top";
 6         //定义类的方法
 7         public viod printout(){
 8                          System.out.println(url_China);
 9         System.out.println(url_English);
10         }
11 
12 
13     }
14 }

 

3.如何使用Java中的对象

使用对象的步骤:

3.1步骤1:创建对象

方法:类名 对象名 = new 类名();
HelloWorld hello = new HelloWorld();

3.2步骤2:使用对象

引用对象的属性:对象名.属性
hello.url_China=”幸福时光”;//给url_China赋值
引用对象的方法:对象名.方法名();
hello.printout();//调用方法

4.Java中的成员变量和局部变量

1.成员变量:
在类中定义,用来描述对象将要有什么属性
成员变量能够在该类的所有方法中使用,也能在与该类相关联的类中使用
2.局部变量:
在类的方法中定义,在方法中临时保存数据
局部变量只能在定义他的那个方法中使用,如果你是在方法1中定义,就只能用在方法1中,方法2是无法使用这个变量的
3.成员变量和局部变量的区别:
a.作用域不同
局部变量的作用域仅限于定义它的方法
成员变量的作用域在整个类内部都是可见的
b.初始值不同
Java会给成员变量一个初始值
Java不会给局部变量赋予初始值
c.局部变量同名问题
在同一个方法中,不允许有相同的局部变量
在不同的方法中,可以有相同的局部变量
d.优先级
两类变量同名时,局部变量具有更高的优先级,也就是遵循就近原则

5.Java中的构造方法

5.1什么是构造方法

创建一个对象时:
HelloWorld hello = new HelloWorld();
1.使用new+构造方法, 创建一个新的对象,这也是构造方法唯一的一个功能
2.构造方法是定义在Java类中的一个用来初始化对象的方法,构造方法与类名相同且没有返回值。
3.如果我们没定义构造方法,Java自动补充一个默认的构造方法
4.构造方法的语句格式


使用的时候用public加类名就可以,不用加构造方法
其实我们创建对象的时候执行的就是构造方法
5.当没有制定构造方法时,系统会自动添加无参的构造方法
6.当有指定构造方法,无论是有参,无参的构造方法,都不会自动添加无参的构造方法
7.构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法
8.构造方法不但可以给对象的属性赋值,还可以在赋值的时候对值进行判断,给属性赋一个合理的值

6.static的使用之静态变量

被static修饰的成员称为静态成员或者类成员,该成员在类中被定义,但是将被该类所有的对象拷贝一份,所有的对象都将自动拥有这个属性。
使用static可以修饰变量、方法、代码块
调用这个static变量时,有两种不同的调用方法:
1.创建一个对象,根据对象.属来调用
2.可以直接使用类名调用
用个图片说明:


需要注意的是,static修饰的变量称为静态变量,当这个静态变量在一个对象里面被改变的时候,不会改变另外一个变量里面的值

7.static的使用之静态方法

当一个方法被static修饰之后,则跟静态变量一样,成为一个静态方法,这个方法被所有的对象共享,即根据这个类创建的对象都自动带有这个方法。
调用方式也是有两种,同上面静态变量是一样的。
第一种是直接通过类名.方法名()调用
第二种是先创建对象,然后通过对象.方法名()调用
不过静态方法里面有一些调用是需要注意的:
1.静态方法里面只能调用静态方法,不能直接调用非静态方法,因为静态方法和静态变量都是对象共享,都默认含有,但是非静态方法只能先创建对象,然后通过对象调用。
2.普通成员方法中,可以直接访问静态变量和非变量
3.静态方法不能直接调用非静态方法,需要通过对象来访问非静态方法

8.static使用之静态初始化块

初始化块是对构造方法的一个补充,可以将一些需要初始化的变量值放在这个地方,在实例化的时候会执行。
如果在初始化块前加上static,则成为一个静态初始化块,这个块只能给静态变量赋值,不能初始化普通的成员变量
静态初始化块只会在创建对象的时候初始化一次,普通初始化块不是一次
例子:

 1 public class HelloWorld {
 2 
 3     String name; // 声明变量name
 4     String sex; // 声明变量sex
 5     static int age;// 声明静态变量age
 6 
 7     // 构造方法
 8     public HelloWorld () { 
 9         System.out.println("通过构造方法初始化name");
10         name = "tom";
11     }
12 
13     // 初始化块
14     { 
15         System.out.println("通过初始化块初始化sex");
16         sex = "男";
17     }
18 
19     // 静态初始化块
20      static { 
21         System.out.println("通过静态初始化块初始化age");
22         age = 20;
23     }
24 
25     public void show() {
26         System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
27     }
28 
29     public static void main(String[] args) {
30 
31         // 创建对象
32         HelloWorld hello = new HelloWorld();
33         // 调用对象的show方法
34         hello.show();
35 
36     }
37 }

 

posted @ 2016-11-16 11:29  洋葱源码  阅读(717)  评论(0编辑  收藏  举报