十二、关于“类”的名词解析

1.1 类

同一个.java文件支持定义多个类,类名不能相同,必须只有一个类(与文件名相同的类)被public修饰,其余都是缺省

1.2 对象:Java中只有引用数据类型才能产生对象

注意:特殊的引用数据类型--数组,可以通过“=”发生地址指向的改变

声明:数据类型 对象名;

实例化(创建):数据类型 对象名 = new 数据类型([参数列表]);

声明和实例化的区别:

①个数。声明:只在栈内存声明一个类的对象。实例化:既在栈内存声明一个类的对象,又通过new关键字将地址指向堆内存。

②能否直接应用。声明:对象不能直接使用,会报空指针异常。实例化: 可以直接使用

1-3 类成员:在类中能定义的内容

成员变量Property(全局属性、全局变量、成员字段、成员属性):用来描述一类事物或一个具体的对象

按作用域分:

  • 局部变量 : 作用于指定的代码块中,必须定义初值

  • 成员变量 : 作用于整个类

按照动静态划分

  • 成员变量 -- 实际开发中操作最多 ; 值会根据不同的用户 (不同的条件),进行不同的赋值

  • 成员常量 -- 数据值(final) 和存储位置(static) 都相对稳定,实际开发中没有特殊要求一般不建议定义成员常量

成员方法 -- 该类事物所具备的功能 (能力)

构造器 (构造方法) -- 用来实例化对象

//类定义方式 -- 名词提炼 : 人开门 伪代码

public class 人 {
​
    public static void main(String[] args){
​
        //门.open(); -- 门表示一类 , 实际开发中 ,不可能出现购买一类事物 , 不推荐使用类调用方法 , 而是通过类的一个具体的对象调用;
​        //创建(实例化) 门的一个具体对象;
​        门的对象.open();
​        }
​}
​
public class 门 {
​
    public static void open();
​
}

1-4类和类成员的定义格式 (重点记忆)

[ ]中的内容表示可有可无

[访问权限修饰符] [修饰符(一般只有一个)] class 类名 {

    //成员属性

    [访问权限修饰符] [修饰符(可以有多个)] 数据类型 属性名 [=值];

    // 构造器 (构造方法)

    [访问权限修饰符] 类名 ([参数列表]) { }

    //成员方法

    [访问权限修饰符] [修饰符] 返回值类型 方法名 ( [参数列表] ) [throws 异常类] [{

    方法体;

    [return 返回值结果;]

    }]

}

2 访问权限修饰符

作用范围本类同包子类\子包任意
public****
protected***
缺省**
private*

3 修饰符static:静态的,被修饰内容的位置相对稳定,修饰成员属性和成员方法和代码块

注意:

(1)被static修饰的成员属性可以“类名.成员属性”来调用

(2)在静态代码块中调用其它类成员,则该类成员也必须是静态

(3)修饰代码块时,代码块先加载,然后再执行的主函数,且在程序执行过程中只执行一次

//代码块示例
private static int num;
public static void main(String[] args){
    System.out.println(num);
}
static{
    num=10;
}

好处:省去创建对象造成内存空间的浪费

缺点:由于被修饰内容的位置相对稳定,不利于JVM虚拟机的清除,因此实际开发中不推荐使用

Work w = new Work();
w.show="123";    //浪费内存空间
Work.show="456";    //不用创建对象就能直接调用,节省内存空间

4 abstract:抽象的

修饰类,此类不能通过new关键字实例化对象

修饰成员方法,此成员方法没有方法体

5 final:最终的

修饰类,此类不能被继承,没有子类

修饰成员字段,必须定义初始值,且常量名要求全部大写

修饰成员方法,此方法不能被重写

拓展:常用于与static配合使用定义成员常量

常量:在某一特定时期内,值和位置相对稳定,存在常量池中

常量的定义格式:public static final 数据类型 常量名 = 值;

static与final:

static表示常量存储的位置相对稳定,final表示常量值相对稳定

6 synchronized:同步

修饰成员方法和代码块

7 面试题总结:请阐述你学过的修饰符有哪些?含义是什么?都能修饰什么 ? 修饰的特点是什么?

修饰符含义能够修饰什么特点
static静态的成员属性,成员方法,代码块类名.直接调用;代码块优先主函数加载,并且只加载一次
abstract抽象的类,成员方法类不能实例化对象;方法没有方法体
final最终的类,成员字段,成员方法类没有子类;成员字段必须有初始值;方法不能被重写
synchronized同步的成员方法 和 代码块同步操作

8 封装:将某些指定的代码 "保护" 起来 , 不被 外界轻易访问

(1)封装的是什么 ?

成员字段 : 全部私有化被private修饰 , 防止其他人外部随意访问

成员方法 : 将功能代码定义到指定类的指定方法中 , 从而简化了主函数代码操作,提高运行效率 , 在主函数中 , 只需要实例化对象 , 对象.调用方法

(2)使用封装的好处 (重点记忆)

  • 提高代码安全性

  • 简化主函数代码编写

  • 降低类与类之间耦合度(解耦合):修改代码时的数量少,便于维护

9 构造器:①实例化对象 ②进行值传递

特点:

  • 构造器方法名和类名一致

  • 构造器没有返回值部分

  • 空参构造与有参构造构成重载

注意事项 :

1 . 当类中没有明确定义构造器时 , JVM虚拟机会为当前的类自动配置一个默认的无参构造器

2 . 当类中如果明确定义了构造器 , JVM不会提供任何的构造器给你

3 . 实际开发过程中定义类时 , 无参、有参构造器同时编写以满足不同用户的需求

10 标准JavaBean类:定义属性、字段、方法、事件

(1)定义的Java类 必须使用 public 作为访问权限修饰符

(2)成员变量使用private修饰

(3)必须提供无参构造方法

(4)成员方法提供每一个成员变量对应的setXxx()和getXxx()方法

区分属性与字段:

① 字段 (Field) : Java类中 被访问权限修饰符 修饰变量 -- 一定是成员变量

② 属性 (Property) : Java中指定字段的get/set方法去掉get/set之后 单词首字母小写 与 成员字段名 一致 , 称之为属性

拓展 :

当成员字段的数据类型是 boolean 时 , 对应的 get方法会变为isXxx()

11. Java中的算法 -- 递归算法

(1)Java 不侧重算法 和 数据结构 ; 但是要求会两种算法 (递归算法和递推算法) 和集合部分的底层的存储结构

(2)使用算法的前提 : 已知一组数据 , 具有一定的规律

(3)以上的两种算法除了写法不一样 ,其他的都一样

(4)以上的两种算法含义 (典型例子:n的阶乘)

①递归算法 : 在自身的方法体中 , 再次调用自己

②递推算法 : 使用循环语句 (一般是 for循环) 对指定的代码完成重复操作

12 总结

(1)面试题 : 实际开发中 , 使用递归算法和递推算法哪个更好 ?

答 : 没有最好 , 只有最合适

① 当操作的次数较少时 , 推荐使用 递归方式 , 编写更加简便

② 当操作次数较多的时候 , 推荐使用递推 , 更节省栈内存空间

(2)递推方式更节省内存空间

递归方式实现原理在方法的本身再次调用方法 ,当且仅当执行到某一确定值的时候才能计算出结果 ,并不断的向前计算 ,结束之前开辟出来的方法 ,如果操作次数过多容易造成栈内存溢出

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L-Q-W

您的鼓励是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值