从头学习JAVA(五)

面向对象(上)

类和对象
JAVA是面向对象的程序设计语言,类是面向对象的重要内容,我们可以把类当成一种自定义数据类型,可以使用类来定义变量,这种类型的变量统称为引用变量。所有类都是引用数据类型。

JAVA语言里定义类:

修饰符 class  类名
{
  零到多个构造器定义;
  零到多个Field;//Fileld = 成员变量
  零到多个方法;
}

构造器说明:如果程序员没有自定义构造器,那么系统会提供一个默认的构造器。一旦程序员提供了构造器,那么系统将不再为该类提供构造器。

修饰符说明::public、protected、private三个只能出现其中一个;abstract、final两个只能同时出现其他一个,它们可以和static组合起来修饰方法。

static的真正作用是用于区分成员变量、方法、内部类、初始化块这四种成员到底属于类本身还是属于实例。使用static修饰的变量可以直接使用 类.变量对象.变量 来访问,没有使用使用static修饰的变量只能通过 对象.变量 来访问。

对象、引用、指针

        P p1 = new P();
        p1.i = 6;

        P p2 = p1;
        p2.i = 3;

        System.out.println(p1.i);
        //打印的结果是 3,因为实际上p1和p2引用的是同一个对象。


class P {
    int i ;
}

this关键字
this作为对象的默认引用有两种情形:
1.构造器中引用该构造器正在初始化的对象;
2.在方法中引用调用该方法的对象;

this关键字的最大作用就是让类中一个方法,访问该类的另一个方法或成员变量;

class Dog {

    public void jump() {
        System.out.println("jump");
    }

    public void run() {
//      Dog dog = new Dog();
//      dog.jump();
        this.jump();

    }
}

在static修饰的方法中不能使用this引用。由于static修饰的方法不能使用this引用,所以static修饰的方法不能访问不使用static修饰的普通成员,因此JAVA语法规定:静态成员不能直接访问非静态成员。


方法是类或者对象的行为特征的抽象,方法是类或者对象最重要的组成部分。

JAVA语言里方法的所属性主要体现在:
1.方法不能独立定义,方法只能在类体里定义
2.从逻辑意义上来看,方法要么属于类本身,要么属于该类的一个对象
3.永远不能独立执行方法,执行方法必须使用类或者对象作为调用者。

使用static修饰的方法属于类本身,因此使用该类的任何对象来调用这个方法时将会得到相同的执行结果,因为实际上还是使用这些实例所属的类作为调用者。

JAVA的方法参数传递方式只有一种:值传递。就是讲实际参数值得副本(复制品)传入方法内,而参数本身不会受到任何影响。基本类型int,float等如此,不过引用类型则有些不同,方法传递的参数依然是副本,不过是引用类型的副本,实际上如果对传进来的参数进行操作,操作指向的依然是堆内存中的对象,所以看起来像是传进来的是实际对象。

public class Tets {
    public static void main(String[] args) {
        Dog dog = new Dog();
        test1(dog);
        System.out.println(dog.i);
        //结果是 6,因为在test1方法里实际操作的是堆内存中对象。 
    }

    public static void test1(Dog dog) {
        dog.i = 6;
        System.out.println(dog.i);
        //结果是 6
    }
}

class Dog {
    int i = 0;
}

形参个数可变得方法
在最后一个形参的类型后面增加三个点(…),则表示该形参可以接受多个参数值,实际上就是一个数组。数组形参可以处于形参列表的任意位置,但个数可变的形参只能处于形参列表的最后,也就是说一个方法中最多只能有一个长度可变的形参。

public class Tets {
    public static void main(String[] args) {
        test1(1,"语文书","数学书","音乐书");
    }

    public static void test1(int i,String...books) {
        for (String book : books) {
            System.out.println(book);
        }
    }
}

//public static void test(int a, String...b);
//public static void test(int a, String[] b);
//一样效果

递归方法
一个方法体内条用它自身,被称为方法递归。方法递归包含了一种隐式的循环,它会重复执行某段嗲吗,但这种重复执行无须循环控制。

方法重载
JAVA允许同一个类里定义多个同名方法,只要形参列表不同就行。也就是说重载只与参数列表有关,其他的部分如方法返回值,修饰符等与方法重载没有任何关系。


成员变量和局部变量
在JAVA中根据定义变量的位置不同,可以将变量分成两大类:成员变量和局部变量。

to be continue…
page/122

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值