09:类与对象

对象与类


一、类

类是一种抽象的数据类型,它是对某一事物整体描述/定义,但是不能具体代表某一个具体的事物。对象是抽象概念的具体实例。

类的构造方法

构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的,构造方法分为有参构造方法和无参构造方法,区别就在于有没有参数。具体如下:

public class Demo01 {

    public Demo01()  {                              // 定义无参构造方法
        System.out.println("无参构造方法");
    }

    public Demo01(String name) {                   // 定义有参构造方法
        System.out.println("有参构造方法");
    }
}

注意事项:

  • 构造方法是一种特殊的方法。

  • 每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。

  • 在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

  • 没有返回类型,甚至连void也没有

  • 构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。

  • 不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。

this关键字

this可以访问类中的成员变量,用来区分成员变量和局部变量(重名问题)。语法如下:

this.成员变量名称;

例:

public class Demo02 {

    public String name;    //定义成员变量name;

    public Demo02()  {}               

    public Demo02(String name) {   
        this.name = name;     //第一个name指的是成员变量;第二个name指的是参数名称
    }
}

this可以访问本类中的成员方法。语法如下:

this.方法名;

例:

public class Demo03 {

    //定义一个方法a
    public void a(){
        System.out.println("hello");  
    }
    //定义一个方法b
    public void b(){
        this.a();    //通过this调用方法a
    }

    public static void main(String[] args) {
        Demo03 c = new Demo03();    //创建对象
        c.b();                      //调用方法b
    }
}

this可以访问本类的构造方法。语法如下:

this();

注意:

  • ()中可以有参数的 如果有参数 就是调用指定的有参构造
  • this() 不能使用在普通方法中 只能写在构造方法中
  • 必须是构造方法中的第一条语句

例:

public class Demo04 {

    public String name;
    public int age;

    public Demo04()  {               // 定义无参构造方法
        System.out.println("你好");
    }

    public Demo04(String name) {    // 定义有参构造方法
        this();             //调用本来的无参构造方法
        this.name = name;
    }

    public Demo04(String name, int age) {
        this(name);             //调用本来的有参构造方法
        this.age = age;
    }
    public static void main(String[] args){
        //调用构造器,得到该类的实例对象
        Demo04 s = new Demo04("Tom",20);
        System.out.println(s.name + s.age);
    }
}

二、对象

对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字 new 来创建一个对象。
  • 初始化:使用 new 创建对象时,会调用构造方法初始化对象。

具体语法如下:

Test test = new Test();
Test test = new Test("abc");

实例如下:

public class Demo02 {

    public String name;

    public Demo02()  {}               // 定义无参构造方法

    public Demo02(String name) {    // 定义有参构造方法
        this.name = name;
    }
    public static void main(String[] args){
        //调用构造器,得到该类的实例对象
        Demo02 s = new Demo02("good");
        System.out.println(s.name);
    }
}

当用户使用new操作符创建一个对象后,可以使用“对象.类成员”来获取对象的属性和行为。语法如下:

对象.方法名();   //调用方法对象.变量名;     //调用变量

代码如下:

public class Demo05 {

    public int i = 1314;     //成员变量,即属性
    public String j;

    public Demo05()  {}               // 定义无参构造方法

    public void say(){        //方法
        System.out.print("祝你");
    }


    public static void main(String[] args){
        //调用构造器,得到该类的实例对象
        Demo05 s = new Demo05();    //创建对象
        //调用方法
        s.say();
        //调用变量
        System.out.println(s.i);
    }
}

原理

程序调用构造器时,系统会先为该对象分配内存空间,并为这个对象执行默认初始化,这个对象就产生了。只是此时还不能被外部程序访问。当构造器的执行体执行结束后,这个对象作为构造器的返回值被返回,通常还会赋值给另一个引用类型的变量,从而让外部程序可以访问该对象。


09:类与对象

上一篇:nginx默认安装的ssl配置


下一篇:YOLOv2/YOLO 9000深入理解