Java中类和对象的知识点

目录

类的实例化

this引用

this用法

对象的构造及初始化

构造方法 

 构造方法重载

有参和无参

调用构造方法

访问限定符

封装

static静态

静态方法

代码块

代码块执行顺序

总结


 每一个类会产生一个字节码文件.class
  一般一个文件当中只定义一个类!!!
 public修饰的类必须要和文件名相同!!!

 类中包含的并且在方法外部的变量叫做成员变量,类中包含的方法叫做成员方法,成员变量没初始化之前都会有一个默认值

 方法中包含的变量又叫局部变量,局部变量在使用前一定要初始化!!!

class Person {
    //public叫访问修饰限定符
    public String name;//成员变量
    public static int count = 10;//静态成员变量,注意它不在对象当中

    public void sleep() {//成员方法
        int age;//局部变量
    }

    public static void wow() {//静态成员方法

    }
}


类的实例化

实例化出的对象 占用实际的物理空间,存储类成员变量

 Person(类型) person(变量)=new Person(); 这个new Person();可以理解为对象
 整个意思是把new Person();的地址存到person这个引用变量里,也可以说这个引用变量指向了new Person()这个对象,这个对象一般存的是成员变量
 System.out.println(person);//输出的是对象的地址

 person.name="666";
 System.out.println(person.name);
 使用 . 来访问对象中的属性和方法,可读可输出


注意事项:
 new 关键字用于创建一个对象的实例.
 同一个类可以创建多个实例.


this引用

代表当前对象的引用(当前对象的引用可以理解为地址),成员方法运行时调用该成员方法的对象。谁调用这个方法,那么this就是谁

this用法

1. this.成员变量
2. this.成员方法

注意:this引用的是调用成员方法的对象
1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
2. this只能在"成员方法"中使用
3. 在"成员方法"中,this只能引用当前对象,不能再引用其他对象
4. this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法
 对象的引用传递给该成员方法,this负责来接收



对象的构造及初始化

 理解成如何初始化对象的成员变量

        Java java = new Java();
        java.age = 10;//这算初始化对象的成员变量

构造方法 

构造方法:在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。

一般的方法由返回值、参数类型、方法名组成

1. 没有返回值
2. 方法名与类名必须一样
3. 可以有多个构造方法
注意:构造方法的作用就是对对象中的成员进行初始化,并不负责给对象开辟空间。


 构造方法重载

下面有参和无参的代码就是方法重载

名字相同,参数列表不同,因此构成了方法重载



有参和无参

默认构造方法,系统送你一个无参构造方法,前提是没有其他构造方法

注意:一旦用户定义,编译器则不再生成。

    public Student() {//无参构造方法,如果屏蔽这个构造方法,下面那个new Student()会报错
        this.name = "java";
    }
    public Student(String name, int age) {//有参构造方法
        this.name = name;
        this.age = age;
    }


调用构造方法

        //Student student = new Student();//new Student();调用无参构造方法
        Student student = new Student("哈哈",9);//new Student();调用有参构造方法


this():调用其他构造方法,只能在构造方法中写

    public Student() {//无参构造方法
        this("鼠标",10);//只能出现在当前构造方法的第一行
    }


访问限定符

public、default、protected、private
 default权限指:什么都不写时的默认权限
 protected主要是用在继承中


封装

简单来说,将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互
 从语法上来说,就是被private修饰的成员变量或者成员方法,只能在当前类中使用

 要想访问封装的成员,对其提供公开的get和set获取和修改的方法


对类、接口等的封装机制的体现,为了更好的管理和组织类

 包还有一个重要的作用:在同一个工程中允许存在相同名称的类,只要处在不同的包中即可。
 IDEA中src就是一个默认的包


常见的包:
1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
2. java.lang.reflect:java 反射编程包;
3. java.net:进行网络编程开发包。
4. java.sql:进行数据库开发的支持包。
5. java.util:是java提供的工具程序包。(集合类等) 非常重要
6. java.io:I/O编程开发包


static静态

1. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
2. 类变量存储在方法区当中
3. 生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁)
 被static修饰的成员,称之为静态成员,也可以称为类成员。
 静态成员变量最大的特性:其不属于某个具体的对象,是所有对象所共享的。

    public static String gender;//不属于对象了,换句话说静态的成员变量不属于对象

静态方法

1. 不属于某个具体的对象,是类方法
2. 可以通过对象调用,也可以通过类名.静态方法名(...)方式调用,更推荐使用后者

    public  static void wow(){
    }

    public static void main(String[] args) {
        Main.wow();
    }

3. 不能在静态方法中访问任何非静态的成员变量或非静态的成员方法
4. 静态方法无法重写,不能用来实现多态


代码块

使用 {} 定义的一段代码称为代码块,分为普通代码块、构造块(重要)、静态块(重要)、同步代码块(重要)

静态块:一般用于初始化静态成员变量

    public static String gender;
    static {//初始化静态成员
        gender = "boy";
        System.out.println("静态代码块");
    }

注意事项:
静态代码块不管生成多少个对象,其只会执行一次

静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的
如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)

构造块:也叫:实例代码块。构造代码块一般用于初始化实例成员变量
注意:实例代码块只有在创建对象时才会执行

    {
        System.out.println("构造代码块/实例代码块");
    }


代码块执行顺序

class Oh {
    public int age;
    public String name;
    public static String gender;//不属于对象了,静态的成员变量不属于对象

    public Oh(int age, String name) {
        this.age = age;
        this.name = name;
        System.out.println("(String,int)");
    }

    static {//初始化静态成员
        gender = "boy";
        System.out.println("静态代码块");
    }

    {
        System.out.println("构造代码块/实例代码块");
    }

}
public class Main {

    public static void main(String[] args) {
        Oh oh = new Oh(10, "11");
        System.out.println();
        Oh oh2 = new Oh(10, "11");
    }
}

总结

以上便是类和对象的知识点,内容含量还是很多的,需要慢慢吸收加以掌握

你可能感兴趣的:(java,jvm,开发语言)