【25节JavaSE知识点·9】对象 类 方法重载 构造方法 this关键字 引用

面向对象的编程思想

面向对象

1、编程思想

  • 面向对象编程思想:从对象入手,把和需求相关的对象找出来(抽象),直到需求功能实现。
  • 适用于整个软件开发过程,面向对象的分析OOA、面向对象的设计OOD、面向对象的编程OOP、测试

2、对象

一切皆对象 万物皆对象

计算机中的对象:是现实客观世界中的事物在计算机中的一种表现形式。

对象的组成(图纸):

  • 属性(有什么)通过成员变量来定义
  • 方法(能干什么)通过方法来定义

3、类

类:用于描述对象的共性。

类的组成:属性和方法。

4、类和对象的关系

类是对象的模板(类 是 对象共性 的提取)

对象是类的实例(对象 是 类 的具体存在)

类的定义

各司其职:各个类干好自己的事情。

类的五大成分:成员变量、构造器、方法、代码块、内部类

//测试类、入口类,有main函数
public class TestStudent{

}

//用于学习类的定义
public class 类名{     //类名,望文生义
    //属性
    //方法

}

1、属性(成员变量)

位置:类以内,方法以外

使用:对象名.属性;

语法:数据类型 变量名; //只声明

​ 数据类型 变量名 = 值; //声明的同时赋值

局部变量实例成员变量
定义位置方法以内类以内,方法外
默认值有(同数组元素默认值)
作用范围从定义开始到定义它的代码块结束整个类
命名冲突重合范围不允许命名冲突可以和局部变量重名,就近原则
初始化必须初始化才能使用有默认值

2、方法(成员方法)

位置:类以内 其他方法外

使用:对象名.方法;

语法:(类似于函数的定义)

public void 方法名(形参列表){

//方法体语句

}

3、完整方法语句

修饰符 返回值类型 方法名(形参列表) 异常列表{

​ 方法体语句

}

创建对象

1、创建一个对象

类名 对象名 = new 构造方法名(实参列表); //类是一种引用类型

2、使用对象

对象名.属性名

对象名.方法名(实参列表)

3、对象的创建过程【重】

  1. 分配内存空间
  2. 给属性赋默认值
  3. 调用构造方法再次给属性赋值

方法的重载(overload)

  • 有些情况下,对象的同一种行为可能因为参数的不同存在多种实现过程。
  • 实际就是同一个类当中 方法名相同 形参列表不同 的方法

方法重载的语法要求:

1> 方法名必须相同

2> 形参列表必须不同(个数、类型、顺序任一不同)

3> 返回值类型、修饰符 没有要求

注意:如果两个方法只有形参列表的参数名不同,不是方法重载

【题】哪些是方法重载?

【例子:

public void m1(){}

public void m1(int a){}

public void m1(String s){}    //ok

public int m1(int a){return 1;}    //不是重载,只能参数名不同

void M1(){}    //名字不同不是重载

public int m1(int a,String s){return 1;}    //ok

public void m1(String s, int a){}    //ok

public void m1(byte b){}    //ok

void m1(){}    //不是重载,形参列表同举例

int m1(int b, int b){return 1;}    //ok

使用:

  • 在编译时,系统会根据方法的实参和形参列表进行匹配,匹配不上就报错。
  • 在执行时,JVM会先进行参数类型的精确匹配,匹配不上会就近类型转换。

构造方法【重点】

构造方法,也称为构造器,是定义在类中的一种特殊方法。

特殊的语法要求:

  • 方法名必须和类名相同
  • 没有返回值类型 (连void都没有) 修饰符 类名(形参列表){}
  • 构造方法允许方法重载Overload 无参构造方法、有参构造方法
  • 不允许手动调用,每次创建对象时,由JVM自动调用一次

注意:

  • 如果一个类中没有任何构造方法,系统会默认送你一个无参构造方法。
  • 如果类中已经定义构造方法,则系统不会再分配无参构造方法。
  • 在一个类中定义了带参构造时,养成同时定义公开无参构造方法的习惯。

作用:用于创建对象时,给对象的属性赋值。

this关键字

类似于“这个”第一人称 “我” 不定代词

this代表当前对象(是引用)

有两种用法:

  1. this.的用法

    位置:用在构造方法或普通的成员方法中

    作用:用于使用当前对象的属性或者方法。

    语法:this.属性名 //使用当前对象的属性

    ​ this.方法名() //调用当前对象的方法

    注意:
    1> this.可以省略,但是,当成员变量和局部变量重名时,必须用this来区分。

    2> this不能在main函数中使用

  2. this() 或 this (实参) 的用法

    位置:用在本类的构造方法中,并且必须是第一行。

    【重】:this() 只能应用在构造方法中

    作用:用于调用本类的其他构造方法(构造方法的复用)

    语法:this() //调用本类的无参构造方法

    ​ this(实参) //调用本类的带参构造方法

【奇怪题~重点】

public class TestConstructor {
    public static void main(String[] args) {
        ClassC c = new ClassC();
    }
}
class ClassA{
    public ClassA(){
        System.out.println("A");
    }

}
class ClassB{
    public ClassB(){
        System.out.println("B");
    }
}
class ClassC{
    ClassA a = new ClassA();
    ClassB b;
    public ClassC(){
        System.out.println("C");
        b = new ClassB();
    }
}
-------------------------------------------------------
A
C
B

引用

1、回顾:Java的数据类型

1>基本类型:8种

int m = 5; //4字节,存数值

2>引用类型:String 数组 类 接口

Student s = new Student(); //引用类型的变量,存储的是对象的首地址

int[] a = new int[5]; // a中存储的是数组的首地址

2、不同类型的数据作为函数/方法的参数进行传递

1>基本类型:传递的数值

2>引用类型:引用类型作为函数/方法的参数,传递的是地址,形参、实参指向同一个对象。

注意:null表示还没有任何指向。

图片

3、引用类型的null值

1>可以声明引用类型的变量,如果是局部变量,必须赋值才能使用。

2>可以给引用类型的变量赋null值,代表空地址或空对象。

3>当基于null引用使用.访问属性或方法时,编译ok,执行Error(NullPointerException)空指针异常。

注意:引用中的地址值发生改变,代表指向了新的对象。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值