JAVA 关于类和对象

一、类

    首先我们要先了解一下什么是类?类主要是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性,哪些功能下面我们来举个例子:

class Person {
    public int age;              //成员属性  
    public String name;
    public String sex;
    public void eat() {          //成员方法
       System.out.println("吃饭!");  
   }
    public void sleep() {
       System.out.println("睡觉!");  
   }
}

在上述代码中,class定义类的关键字,Person为这个类的类名{ }中的内容为类的主体类中包含的内容称为类的成员。变量信息主要是对类进行描述的,称之为类的成员属性或者类成员变量。方法主要说明类具有哪些功能,称为类的成员方法

• 类名注意采用大驼峰定义
 
 

二、类的实例化

    定义了一个类,就相当于在计算机中定义了一种新的类型( 类是用户自定义了一个新的类型)。 用类类型创建对象的过程,称为类的实例化 。对于上述的Person类,举个实例化的例子:
public class Main{
  public static void main(String[] args) {
        Person person = new Person();       //通过new实例化对象
        person.eat();                       //成员方法调用需要通过对象的引用调用
        person.sleep();
  }
}
※注意事项
• new 关键字用于创建一个对象的实例;
• 使用 . 来访问对象中的属性和方法;
• 同一个类可以创建多个实例。
 
 

三、类的成员

1)在类中但是方法外部定义的变量称为 "字段" "属性" "成员变量",用于描述一个类中包含哪些数据。对于一个对象的字段如果没有显式设置初始值, 那么会被设置一个默认的初值。

• 对于各种数字类型, 默认值为 0;
• 对于 boolean 类型 , 默认值为 false;
• 对于引用类型(String, Array, 以及自定制类 ), 默认值为 null。 null 在 Java 中为 " 空引用 ", 表示 不引用任何对象 类似于 C 语言中的 空指针 如果对 null 进行 操作就会 引发异常
    很多时候我们不希望字段使用默认值, 而是需要我们 显式设定初值 。举个例子:
class Person {
   public String name = "李四";
   public int age = 20;
}
class Test {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name);
        System.out.println(person.age);
   }
}

// 执行结果:
李四
20

2)方法中还有一种特殊的方法称为 构造方法 (construction method) 。在实例化对象的时候会被自动调用到的方法,方法名字和类名相同用于对象的初始化

 

四、关键字

1)static关键字:

1.  修饰属性。 Java中的 静态属性和类相关, 和具体的实例无关。 同一个类的不同实例共用同一个 静态属性
2.  修饰方法。如果在任何方法上应用 static 关键字,此方法称为静态方法。静态方法 属于类 ,而不属于类的对象;即可以 直接调用 静态方法,而 无需创建类的实例 。静态方法可以 访问 静态数据成员,并可以 更改 静态数据成员的值。 
3. 修饰代码块。静态代码块不管生成多少个对象,其只会 执行一次 ,且是 最先 执行的。
※注意事项:
• 静态方法 和实例无关 ,而是和相关;
• 静态方法 不能 直接使用非静态数据成员或调用非静态方法( 非静态数据成员和方法都是和 实例 相关的);
• this和 super 两个关键字 不能 在静态上下文中使用( this 是当前实例的引用, super 是当前实例父类实例的引用, 也是和当前实例相关);
main 方法 static 方法。
 

2)this关键字:this引用的是调用成员方法的对象

1. this 引用的类型:对应类类型引用,即那个 对象调用 就是那个对象的引用类型;
2. this 引用只能 " 成员方法中 使用 ";
3. this 引用 具有final属性 ,在一个成员方法中,不能再去引用其他的对象。
※this  表示当前对象 引用 ( 注意不是当前对象 )。 可以借助 this 来访问对象的 字段和方法 (普通方法和构造方法)。 注: 需要在一个构造方法当中,调用当前类的另外一个构造方法的时候,通过  this()   的形式调用; 必须放在 第一行 ,且 只能调用一个
 
3) private/ public 这两个关键字表示 " 访问权限控制 " 。
public 修饰的成员变量或者成员方法, 可以直接被类的调用者使用;被 private 修饰的成员变量或者成员方法, 不能被类的调用者使用。 即类的使用者根本不需要知道 也不需要关注一个类都有哪些 private 的成员, 从而让类调用者以更低的成本来使用类。
 

五、包

    包 (package) 是组织类的一种方式。使用包的主要目的是保证类的 唯一性 前面已经说了类中的 public private,private 中的成员只能被 类的内部 使用; 如果某个成员不包含 public private 关键字, 此时这个成员可以在 包内部 的其他类使用, 但是不能在包 外部的类使用。
 
 

六、访问限定符

Java 中对于字段和方法共有 四种 访问权限:
1)private: 类内部 能访问, 类外部不能访问;
2)default 默认 ( 也叫包访问权限 ): 类内部 能访问, 同一个包 中的类可以访问, 其他类不能访问;
3)protected: 类内部 能访问, 子类和同一个包 中的类可以访问, 其他类不能访问;
4)public : 类内部和类的调用者 都能 访问。
 
 

七、类和对象的内存布局

    举个例子:

class TestDemo{
    public int a;
    public static int count; 
}
public class Main{
  public static void main(String[] args) {
        TestDemo t1 = new TestDemo();
        t1.a++;
        TestDemo.count++;
        System.out.println(t1.a);
        System.out.println(TestDemo.count);
        System.out.println("============");
        TestDemo t2 = new TestDemo();
        t2.a++;
        TestDemo.count++;
        System.out.println(t2.a);
        System.out.println(TestDemo.count);
    }
}

则上述代码的内存布局如下图所示:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值