利用类来描述现实生活中的事情

利用对象去具体的执行操作

类的内部成员Person

​ 属性:静态描述类的特征(变量、存值)

​ 方法:动态描述类的行为(做事情)

​ 构造方法:用来创建当前类的对象(方法,很特殊)

​ 程序块(代码块):理解为就是一个方法(非常特殊,无修饰符无参数无返回值无名字)

构造方法

类中的第三个成员 --构造方法
  1. 作用:只有一个构建(构造)当前类的对象
  2. 写法:
    权限修饰符 与类名一致的方法名(参数列表) [抛出异常]{
    ​ 一件事情 创建一个对象(当前类Person)
    ​ 返回对象;//返回值类型省略了
    }
  3. 用法:通过new关键字调用
  4. 特点:
    a. 每一个类都有构造方法,若自己在类中没有定义,系统会默认提供一个无参数的构造方法,若在类中自己定义了构造方法,则默认无参数的构造方法即被覆盖
    b. 构造方法存在构造方法重载
  5. 每一个类都有构造方法
    若不定义,系统会默认提供构造方法
    为什么要定义构造方法?什么时候需要设计构造方法?
    在创建对象的同时,想要一并做一些事情,默认提供的构造方法是不会做的,这个时候我们可以自己定义构造方法(无参数的构造方法内做事,也可以定义带参数的)
    public class Person { public String name; public int age; public String sex; //自己定义带参数的构造方法时,把系统提供的默认无参数的构造方法一起写出来,构成构造方法的重载 public Person(String n,int a,String s){ name = n; age = a; sex = s; } //权限修饰符 类名一致的方法名(参数列表) [抛出异常]{方法体} //只有这么一个特殊的方法,名字是大写字母 //少了结构,特征修饰符(没有),返回值类型(结构上没有返回值类型,但是有返回值 对象) public Person(){ System.out.println("我是Person类的构造方法"); } } public class Test { public static void main(String[] args){ //调用Person类中的构造方法 // Person p = new Person("abc"); //自己定义带参数的构造方法时,把系统提供的默认无参数的构造方法一起写出来,构成构造方法的重载 Person p = new Person("香吉士",17,"男"); System.out.println(p.name+"今年"+p.age+"岁,"+"性别:"+p.sex); } }
    但是为了见名知意,如下
    public class Person { public String name; public int age; public String sex; public Person(String n,int a,String s){ name = n; age = a; sex = s; } //我修改为 public Person(String name,int age,String sex){ name = name; age = age; sex = sex; } //这样就会造成变量和属性重名,因为就近原则,再main函数调用(new Person(name,age,sex))的时候就不能用了,为了解决这个问题,下面引入this关键字 //继续修改Person方法为 public Person(String name,int age,String sex){ this.name = name;//this指代Person()对象 this.age = age; this.sex = sex; } }
类的第四个成员 --程序块(代码块)
  1. 作用:跟普通方法一样 做事情的
  2. 写法:可以认为程序是一个 没有修饰符 没有返回值 没有名字的特殊方法
    {
    }
  3. 用法:块也需要调用才能执行,我们自己调用不到(没有名字),每一次我们调用构造方法之前,系统会帮我们自动的调用一次程序块,让他执行一遍
  4. 特点:没有什么重载的概念(压根连名字都没有 连参数都没有),但是可以在类中定义 多个程序块
  5. 块可以在里面写一些程序,我想要在创建对象之前执行
this关键字的使用 --构造方法中属性和变量重名,必须要一个代替词来代替对象
  1. 是一个关键字(指代词)代替的是某一个对象(当前调用属性或方法时的那个对象)
  2. this既然代替的时一个对象,this可以调用什么?
  • 属性 this.name
  • 方法 this.eat() ,一般方法是先创建对象,然后对象去执行(调用)
  • 构造方法
  1. 是创建对象的,早于一般方法,在一般方法内无法调用构造方法,
  2. 构造方法可以重载构造方法,
  3. 构造方法内可以调用另一个构造方法(this() 省略构造方法的名字,因为构造方法的名字必须与类名一致)
  4. 必须在另一个构造方法内调用,必须在程序的第一行
    public Person(String name,int age,String sex){ this();//放在第一行可以 this.name = name; this.age = age; this.sex = sex; this();//放在这里不可以,报错 }
  1. this调用的过程可以放在那个位置写?
    调用属性或者方法这一行代码,可以放在类中的任何成员位置,上下顺序随意


总结

类的四个成员

  1. 属性 -- 静态描述特征(存值)
    权限修饰符 [特征修饰符] 属性类型 属性名字 [= 值]
  2. 方法 -- 动态描述行为(做事情)
    权限修饰符 [特征修饰符] 返回值类型 方法名字 ([参数列表]) [抛出异常] [{方法体}]
    最主要的是方法设计的参数及返回值问题 传递 调用 执行 内存
  3. 构造方法 -- 创建当前类对象(做事情,唯一的事情)
    权限修饰符 与类名一致的方法名 ([参数列表]) [抛出异常] {方法体}
  4. 程序块 -- 一个特殊的方法(没名 做事情 不用我们调用 构建对象之前调用)
  5. this 关键字的使用
    用来代替某一个对象
    可以调用一般属性或方法,放置在任何类成员中
    可以调用构造方法,只能放在另一个构造方法内,只能放在程序的第一行
  6. 类的加载及对象的创建(内存原理 机制)

小任务

  1. 设计一个类模拟一个计算器,做加减乘除 方法 计算方法
控制台输出

请输入第一个数:1
请输入符号:+
请输入第二个数:2
3 (输入2之后输出来结果3,然后立马弹出请输入符号)
请输入符号:-
请输入第二个数:2
1


  1. 设计一个类,替代数组可以做的事情
    数组 长度是固定的 存储一组元素 长度一旦固定,使用起来不太方便,添加元素 删除元素 设计一个类 -- 充当一个容器,ArrayBox 能添加元素,获取元素,删除元素 看看到底有几个