面向对象知识点汇总(一)java语言

类和对象

定义类

   一个类定义,可以包含三种最常见的成员:构造器、成员变量、方法。

成员变量:用于定义该类或该类的实例所包含的状态数据
方法:用于定义该类或该类的实例的行为特征或功能实现。
构造器:用于构造该类的实例,Java语言通过new关键字来调用构造器,从而返回该类的实例。如果没有为一个类编写构造器,则系统会为该类提供一个默认的构造器。

成员变量定义格式

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

修饰符:public、protected、private、static、final,其中public、protected、private三个最多出现其中之一,可以与static、final组合起来修饰成员变量。

类型:基本类型+引用类型

方法定义格式:

[修饰符] 方法返回值类型 方法名(形参列表){
    //由零到多条可执行性语句组成的方法体
}

形参列表:用于定义该方法可以接受的参数,谁调用方法谁负责为形参赋值。

对象的产生和使用

   创建对象的根本途径是构造器,通过new关键字来调用某个类的构造器即可创建。

Person p = new Person();

对象作用:
   访问对象的实例变量
   调用对象的方法
   如果访问权限允许,类里定义的方法和成员变量都可以通过类或实例来调用,语法如下:

.类变量|方法
//访问p的name实例变量,直接为该变量赋值
p.name = "李刚";
//调用p的say()方法,声明say()方法时,定义了一个形参
//调用该方法必须为形参指定一个值
p.say("java语言很简单")//直接输出p的name实例变量,将输出李刚
System.out.println(p.name);
对象、引用和指针

执行Person p = new Person();
这行代码创建了Person对象,这个Person对象被赋给p变量。
在这行代码中实际产生了两个东西:一个是p变量,一个是Person对象。
在这里插入图片描述
   当一个对象被创建成功以后,这个对象将保存在堆内存中,只能通过该对象的引用操作该对象。如图所示,p引用变量本身只存储了一个地址只,并未包含审核实际数据,但它指向实际的Person对象,当访问p引用变量的成员变量和方法时,实际上是访问p所引用对象的成员变量和方法。

   如果堆内存里的对象没有任何变量指向该对象,那么程序将无法再访问该对象,这个对象也就变成了垃圾,java的垃圾回收器将回收该对象,释放该对象所占的内存区。如果希望通知垃圾回收器回收某个对象,只需切断该对象的所有引用变量和它之间的关系计科,也就是是把这些引用变量赋值为null。

对象的this引用

this关键字总是指向调用该方法的对象。
this作为对象的默认引用有两种情形:
   1.构造器中引用该构造器正在初始化的对象
   2.在方法中引用调用该方法的对象
this关键字最大的作用就是让类中的一个方法,访问该类里的另一个方法或实例变量。
举例如下:

public class Dog{
    public void jump(){
        System.out.println("正在执行jump方法")}
    public void run(){
       //使用this引用调用run()方法的对象
        this.jump();
        System.out.println("正在执行run方法")}
}

public class DogTest{
    public static void main(String[] args){
        Dog dog = new Dog();
        dog.run();
    }
}

   如果需要在run()方法中获得调用该方法的对象,通过this关键字就可以满足这个要求,this可以代表任何对象,当this出现在某个方法体中时,它所代表的的对象是不确定的,但类型是确定的,所代表的只能是当前类的实例;只有当这个方法被调用时,它所代表的的对象才被确定下来,谁在调用这个方法,this就代表谁。
   staitc修饰的方法中不能使用this关键字。因为调用静态方法的是该类本身,而不是该类的实例,因此使用this无法指向有效的对象。

   如果方法里有个局部变量和成员变量同名,程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用this前缀,除此之外,this引用也可以用于构造器中作为默认应用,由于构造器是直接使用new关键字来调用而不是使用对象来调用的,所以this在构造器中代表该构造器正在初始化的对象。
举例如下:

public class ThisInConstructor {
    //定义一个成员变量
    public int foo;
    public ThisInConstructor(){
        int foo = 0;
        this.foo = 6;
    }
    public static void main(String[] args){
        System.out.println(new ThisInConstructor().foo);
    }
}

   第六行代码将正在执行初始化的ThisInConstructorfoo对象的成员变量设为6,意味着该构造器返回的所有对象的foo成员变量都等于6。

   当this作为对象的默认引用使用时,程序可以像访问普通引用变量一样来访问这个this引用,甚至可以把this当成普通方法的返回值。如果在某个方法中把this作为返回值,则可以多次连续调用同一个方法。
例子如下:

public class ReturnThis {
    public int age;
    public ReturnThis grow(){
        age++;
        return this;
    }
    public static void main(String[] args){
        ReturnThis rt = new ReturnThis();
        rt.grow().grow().grow();
        System.out.println("rt的age成员变量值是"+rt.age);
    }
}
发布了16 篇原创文章 · 获赞 12 · 访问量 162

猜你喜欢

转载自blog.csdn.net/DIDI___/article/details/104076554
今日推荐