Java里的类和对象

一.类和对象:
类:描述一组对象的状态或者行为,类可以作为抽象数据类型,类可以作为可化对象的模板。
对象:类的实例化,类不可以直接使用,必须实例化生成一个对象之后才能使用。在开发中一般先实现类,再去产生对象。
例:Person p=new Person();
这段代码的意思是,创建一个person数据类型的p。创建的过程中使用了构造函数,就是代码中的“new Person();”,而具体在计算机的内存分布上,是在栈上创建了一个指向Person类型的名为p的引用,而与此同时在堆上分配出一块由Person类决定大小的一块区域。
简单说一下堆和栈中一般储存的内容:
栈:基本数据类型,基本数据类型的变量,引用数据类型的引用,局部变量。
堆:new操作符创建的对象都在堆里面。
二:类的定义:
简单举例:

class Person{
    String name;
    String gender;
    int number;
    public void sleep(){
    }
}

在这个例子中我们构造了一个名为Person的类,在这个类里边,有我们定义的变量,例如字符串变量name,在这个类之中我们也定义了一个名为sleep的方法。
在类中定义的变量我们一般叫做成员变量,注意成员变量在未定义之前都是该类型对应的零值!

在类中定义的方法我们一般叫做成员方法。
在类中定义的成员变量以及成员方法我们都可以通过“.”操作符来调用。
例:

String gender = person.gender;
person.eat();

这两行代码就是对于调用成员变量和成员方法的一个举例。

三.构造函数相关知识点:

1.构造函数的主要作用是完成对象的初始化工作,(如果写的类里面没有构造函数,那么编译器会默认加上一个无参数且方法体为空的构造函数).它能够把定义对象时的参数传给对象的域。意即当创建一个对象时,这个对象就被初始化.如果这时构造函数不为空,则会在创建对象时就执行构造函数里面的代码。

2.构造函数的名称必须与类名相同,包括大小写。

3.构造函数没有返回值,也不能用void修饰. 如果不小心给构造函数前面添加了返回值类型,那么这将使这个构造函数变成一个普通的方法,在运行时将产生找不到构造方法的错误。

4.一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。

5.构造函数可以有多个,多个构造函数还是方法名相同但参数不同,这样我们可以使用不同的构造函数去构造不同的对象。

6.构造函数来讲,在实例化对象的时候只调用一次,而成员可以被调用多次。

7.构造函数的重载:重载指的是方法名相同,参数列表不同的函数,因为类可以有多个构造方法,故会产生重载的情况。
四.this关键字:
1.调用类的属性,也就是调用成员变量:

public class Student{
    String name;
    private void SetName(String name){
        this.name = name;
    }
}

可以简单理解为this是用来进行类的内部之间相互的调用。
this其实是当前student类一个对象的引用,通过当前这个类实例化的对象的引用来访问对象的成员变量。从而对这个成员变量进行操作。

2.调用成员方法:

public class Student{
    String name;
    private void SetName(String name) {
        this.name = name;
        System.out.println("setName: " + this.name);
    }
    private void ThisTest(String name) {
        this.setName(name);
        System.out.println("thisTest: " + this.name);
    }   
}

通过this来调用类实例化对象中的setName这个方法,与调用成员变量类似。

3.调用构造方法:
构造方法是一个类的对象在通过new关键字创建时自动调用的,在程序中不能向调用其他方法一样通过方法名(也就是类名)来调用。但如果一个类有多个构造方法,可以在一个构造方法中通过this(方法名)来调用其他的构造方法。

public class Student {  
    public Student() { 
        this(“Hello!);
    }
    public Student(String name) {
        //方法体
    }
}

public Student(String name)是一个带形式参数的构造方法,因为名字与类名相同,故是一个构造方法。public Student()是另一个构造方法,这之中的this(“Hello”),this()表示调用构造方法,而调用的构造方法可以用里边的参数来判断。"Hello"是一个字符串,所以这个this调用的就是public Student(String name)这个构造方法。

4.返回对象的值
this关键字除了可以引用变量或者成员方法之外,还有一个重大的作用就是返回类的引用。如在代码中,可以使用return this,来返回某个类的引用。此时这个this关键字就代表类的名称。如代码在上面student类中,那么代码代表的含义就是return student。可见,这个this关键字除了可以引用变量或者成员方法之外,还可以作为类的返回值。
五.静态变量:
基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。然而在某些时候,我们更希望该类所有的对象共享同一个成员。这个时候我们就可以用static关键字来进行修饰,static关键字表示这个变量是这一类对象都有的。
Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。对于静态变量来说,它是被存储在一个公共的地址,因为是一个公共的地址, 所以某一个对象修改它,对于另外一个对象就是可见的。
例:我们要统计用person类一共创建了几个对象,这个时候我们可以用static来修饰一个变量用来计数。

class Person{
    private String name;
    String gender;
    int number;
    static int num;
}

注意:静态变量,静态方法属于类,从可读性方面来说推荐使用类名.去调用,当然使用对象.去 调用也不会出错。
在这段代码中,我们就创建了一个静态变量num用来进行计数。这个num对于我们所有创建的Person类型的对象都是可见的。
六.静态方法:
静态方法:方法名前加static关键字
特性:静态方法和静态变量不能访问非静态的实例变量和实例方法 ,没有this引用,不能进行this引用相关的操作。

静态方法可以直接用类名去调用,和静态变量一样。
可见性修饰符
public 公共的 任何情况下都是可访问的
protected 受保护的 子类可访问,哪怕这个子类并不在同一个包。
default 默认的 同一个包中任何类都可访问
private 私有的 只能在一个类中访问

封装
隐藏不想公开给用户的实现
属性: private去修饰
方法: private去修饰
1.把属性隐藏起来
2.把细节隐藏起来,只暴露一些供用户调用的接口

封装的目的:主要安全性,维护起来更加便捷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值