Java基础之面向对象(上)

来源:互联网 发布:有没有写真软件 编辑:程序博客网 时间:2024/04/29 19:16

一、面向对象概述

Java是面向对象的程序设计语言。
面向对象有三大特征:封装,继承,多态
面向对象有两大核心:类和对象。类是某一批对象的抽象,即一种概念。对象则是一个具体的实体。比如说,人类就是类,而张三则是一个人类的具体对象。

二、定义类

Java里定义类的简单语法如下:

[修饰符] class 类名{    零到多个构造器定义    零到多个成员变量    零到多个方法}

修饰符:修饰符可以为public,final,abstract,或者不写。
类的命名规范:类名必须是由一个或多个有意义的单词连缀而成,每个单词的首字母大写,其他字母小写,单词与单词之间不要有任何分隔符。
构造器:构造器是创建一个对象的根本途径,如果一个类没有构造器这个类通常不可以创建实例。所以,Java提供了一个功能,如果我们没有为一个类编写任何的构造器,则系统默认提供一个无参的构造器,如果我们定义了构造器,则系统不再提供默认的构造器。
成员变量:成员变量用于定义该类的或该类实例所包含的状态数据。
方法:方法用于定义该类或该类实例的行为特征或者功能实现。

1.定义成员变量

语法格式:

[修饰符] 类型 成员变量名 [=默认值]

修饰符:修饰符可以省略,也可以是public,protected,private,static,final,其中public,protected,private这三个修饰符只能出现其中一个,可以与static,final组合起来修饰成员变量。
类型:类型可以是Java语言允许的任何数据类型,包括基本类型和引用类型。
成员变量名:成员变量名只要是一个合法的标识符即可,但最好是由多个单词连缀而成,第一个单词首字母小写后面单词首字母大写其余小写。
默认值:可在声明成员变量时赋给其一个初始值,也可以不赋值。

2.定义方法

语法格式:

[修饰符] 方法的返回值类型 方法名(形参列表){    方法体}

修饰符:与成员变量相同
方法的返回值类型:可以是Java语言允许的任何数据类型,包括基本类型和引用类型。
方法名:与成员变量命名规则相同。
形参列表:形参列表用于定义该方法可以接受的参数。

3.构造器

语法格式:

[修饰符] 构造器名 (形参列表){    方法体}

构造器名:必须与类名相同。
修饰符:与定义方法相同。
形参列表:与定义方法相同。

构造器不能定义返回值类型,也不能使用void生命构造器没有返回值,所以也不能使用return语句

下面程序将示意如何创建一个类:

public class Person{    public String name;    public int age;    public void say(String word){        System.out.println(word);    }}

该类没有构造器,所以系统会自动提供一个无参的构造器。

三、对象的产生和使用

创建对象的根本途径是构造器,通过new关键字来调用某个类的构造器即可创建该类的实例。
创建对象的语法,以上面的Person类为例:

Person p = new Person(); 

定义类就是为了反复创建该类的实例,同一个类的实例具有相同的特征,类则是定义了多个实例的共同特征。比如说上面我们创建的这个实例就具有name,age这两个属性,还有say这个动作。我们再创建一个Person实例也会有这些特征。

四、对象在内存中的存储

当我们创建一个对象时如:Person p = new Person();实际上产生了两个东西,一个是变量p,另一个是Person对象。Person对象存储在对内存中,变量p则是存储在栈内存中,实际上p变量是一个引用变量它存储的时Person对象在堆内存中的地址,变量p指向Person对象。具体的存储示意图可以见上一篇数组的存储示意图。堆内存中的对象可以有多个引用,即多个变量指向相同的对象。如:Person p1 = p;这样的话变量p和变量p1就指向了同一个对象。

五、this关键字的使用

java提供了一个 this关键字,this关键字总是指向调用该方法的对象。根据this出现的位置不同,this作为对象的默认饮用水有两种情况:
1.构造器中引用该构造器正在初始化的对象。
2.在方法中引用调用该方法的对象。
this关键字最大的作用就是让类中一个方法访问另一个方法或实例变量。

代码实例:

//定义一个Dog类public class Dog{    //定义一个方法    public void jump(){        System.out.pritln("jump方法");    }    public void run(){        //指向调用该方法的对象        //java允许对象的一个成员直接调用另一个成员,所以此处的this可以省略        this.jump();        System.out.println("run方法");    }}//测试方法public class DogDemo{    public static void main(String [] args){        //创建一个Dog对象        Dog d = new Dog();        //调用run方法        d.run();    }}
运行结果:jump方法  run方法

⚠️注意:在static修饰的方法中不能使用this引用!

当this作为对象的默认引用使用时,程序可以像访问普通变量一样来访问这个this引用,甚至可以把this当作普通方法的返回值。
代码实例:

public class ThisReturn{    public int age;    public ThisReturn grow(){        age++;        //返回调用该方法的对象        return this;    }}public static void main(String [] args){    ThisReturn rt = new ThisReturn();    rt.grow().grow().grow();    System.out.println(rt.age);}

六、关键字static

static是一个特殊的关键字,它可用于修饰方法、成员变量等成员。
static修饰的成员表明该成员属于这个类本身,而不是属于该类的实例,也就是说该成员为该类所有实例共享。
static修饰的成员变量叫类成员变量或静态变量,修饰的方法叫类方法或静态方法。
static修饰的成员变量或方法可以通过类名直接调用而不需要创建对象。
⚠️注意:静态成员不能直接访问非静态成员,如果确实需要在静态方法中访问普通方法则只有创建一个对象来访问。非静态成员可以访问静态成员。

原创粉丝点击