杨校老师课堂之Java面向对象知识点整理集锦1

简介: 杨校老师课堂之Java面向对象知识点整理集锦

第一部分 Java面向对象

1.开发环境搭建及开发工具eclipse使用

eclipse快捷键:

Ctrl+1 快速修复

Ctrl+D: 删除当前行

Ctrl+Alt+ 复制当前行到下一行(复制增加)

Ctrl+Alt+ 复制当前行到上一行(复制增加)

Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴

Alt+ 当前行和上面一行交互位置(同上)

Alt+ 前一个编辑的页面

Alt+ 下一个编辑的页面(当然是针对上面那条来说了)

Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性

Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)

Ctrl+M 最大化当前的EditView (再按则反之)

Ctrl+/ 注释当前行,再按则取消注释

Ctrl+O 快速显示 OutLine

Ctrl+T 快速显示当前类的继承结构

Ctrl+W 关闭当前Editer

2.类和对象

什么是类

:是一组相关属性行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。 

类与对象的关系:

  对象是具体的,真是存在的物种。

  类是对象的抽象出来的,理论上的概念物种

类:
    我说现在已经开始公布HUAWEI手机  P50的概念机,那就是说这款手机还没有实体机存在,只是官方还在设计这个手机。
 
        其中包含:颜色、尺寸、分辨率等。以上说的是这款概念机中的属性、
 
        另还包含:上网、打电话、发短信、拍照、看电视等。这是在说的是这款概念机所具有的功能,也就是行为!

对象:

 我说现在已经开始公布HUAWEI手机  P30的实体机,那就是说这款手机已经存在实体机。
 
 但是有这款手机之前,也一定会先有该机的设计图或是概念机。


3. 成员变量和局部变量区别

  • 定义类:就是定义类的成员,包括成员变量成员方法
  • 成员变量:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外
  • 成员方法:和以前定义方法几乎是一样的。只不过把static去掉,static的作用在面向对象后面中再详细 讲解。

接下来通过一幅图来认识一下成员和局部


  • 在类中的位置不同  【重点
  • 成员变量:类中,方法外
  • 局部变量:方法中或者方法声明上(形式参数)
  • 作用范围不一样  【重点
  • 成员变量:类中
  • 局部变量:方法中
  • 初始化值的不同  【重点
  • 成员变量:有默认值
  • 局部变量:没有默认值。必须先定义,赋值,最后使用
  • 在内存中的位置不同  【重点
  • 成员变量:堆内存
  • 局部变量:栈内存
  • 生命周期不同  【重点
  • 成员变量:随着对象的创建而存在,随着对象的消失而消失
  • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

 

4. 数据类型

Java的数据类型划分为两大类:基础数据类型和引用数据类型

5.构造函数

定义格式:

权限修饰符 构造方法名(参数列表){
 
    // 方法体 
 
} 

构造方法的写法上,方法名与它所在的类名相同。它没有返回值,所以不需要返回值类型,甚至不需要void。

  1. 如果你不提供构造方法,系统会给出无参数构造方法。
  1. 如果你提供了构造方法,系统将不再提供无参数构造方法。
  2. 构造方法是可以重载的,既可以定义参数,也可以不定义参数

 

6.函数

函数定义格式:

权限修饰符 [修饰符] 返回值类型 方法名(参数列表){
    //代码省略...
    return 结果;
}
 
// 上方用方括号包括的修饰符可以有、也可以没有。
// 修饰符有抽象修饰符abstract、有静态修饰符static、也有线程同步锁方法 synchronized 等。
  • 修饰符: public static 固定写法
  • 返回值类型: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者
  • 参数列表:方法在运算过程中的未知数据,调用者调用方法时传递

return:将方法执行后的结果带给调用者,方法执行到 return ,整体方法运行结束

  • 注意:  不能在 return 后面写代码, return 意味着方法结束,所有后面的代码永远不会执行,属于无效代码。
  • 注意:  返回值类型,必须要和 return 语句返回的类型相同,否则编译失败

如何定义方法

首先要确定返回值类型参数列表

调用方法的流程图解


函数重载

  • 方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返 回值类型无关。
  • 参数列表:个数不同,数据类型不同,顺序不同。
  • 重载方法调用:JVM通过方法的参数列表,调用不同的方法。

7. 成员变量的初始化

 


数据类型
默认值
基础数据类型

整型【byte,short,int,long】

0
浮点型【float,double】 0.0
字符【char】 '\u0000'
布尔【boolean】 false
引用数据类型 数组、类、接口 null

8. this关键字

我们发现 setXxx 方法中的形参名字并不符合见名知意的规定,那么如果修改与成员变量名一致,是否就见名知意 了呢?代码如下:

public class Student {
    private String name;
    private int age;
    
    public void setName(String name) {
      name = name;
    }
    public void setAge(int age) {
      age = age;
    }
}

经过修改和测试,我们发现新的问题,成员变量赋值失败了。也就是说,在修改了 setXxx() 的形参变量名后,方 法并没有给成员变量赋值!这是由于形参变量名与成员变量名重名,导致成员变量名被隐藏,方法中的变量名,无 法访问到成员变量,从而赋值失败。所以,我们只能使用this关键字,来解决这个重名问题。


this代表的是当前类对象。

9. static关键字

概述

关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属 于某个对象的。  

也就是说,既然属于类,就可以不靠创建对象来调用了。

9.1 静态成员变量、静态成员变量初始化

静态成员变量:

当 static 修饰成员变量时,该变量称为类变量。

该类的每个对象都共享同一个类变量的值。

任何对象都可以更改 该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。

静态成员变量初始化

静态成员只会在每个类中初始化一次 【静态对象(变量)只初始化一次,而非静态对象(变量)可能会初始化多次】

【Java笔试题】:构造方法、成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的?答:先后顺序是:静态成员变量、成员变量、构造方法。

原因:

a. 当类第一次被加载的时候,静态变量会首先初始化,接着编译器会把实例变量初始化为默认值,然后执行构造方法。

b. Java程序的初始化一般遵循以下三个原则(以下三原则优先级依次递减):

① 静态对象(变量)优先于非静态对象(变量)初始化,其中,静态对象(变量)只初始化一次,而非静态对象(变量)可能会初始化多次;

② 父类优先于子类进行初始化;

③ 按照成员变量定义顺序进行初始化,即使变量定义散布于方法定义中,它们依然在任何方法(包括构造方法)被调用之前先初始化。

 

9.2 静态成员方法

  • 当 static 修饰成员方法时,该方法称为类方法 。
  • 静态方法在声明中有 static ,建议使用类名来调用,而不需要 创建类的对象。
  • 调用方式非常简单。

10. JVM对象内存结构

Java中的内存分配:

Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对数据进行了不同空间的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

具体划分为如下5个内存空间:

  • 栈:存放局部变量
  • 堆:存放所有new出来的东西
  • 方法区:被虚拟机加载的类信息、常量、静态常量等。
  • 寄存器(和系统CPU相关)
  • 本地方法区

11.   Java 继承

概述:

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要 继承那一个类即可。

如图所示:

其中,多个类可以称为子类,单独那一个类称为父类、超类(superclass)或者基类。 继承描述的是事物之间的所属关系,这种关系是: is-a 的关系。例如,图中兔子属于食草动物,食草动物属于动 物。可见,父类更通用,子类更具体。我们通过继承,可以使多种事物之间形成一种关系体系。


定义:  

继承:就是子类继承父类的属性行为,使得子类对象具有与父类相同的属性、相同的行为。

子类可以直接 访问父类中的非私有的属性和行为。

好处:

1. 提高代码的复用性

2. 类与类之间产生了关系,继承是多态的前提

继承的格式:

通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下:

class 父类 {
...
}
class 子类 extends 父类 {
...
}

继承演示,代码如下:

 /*
 * 定义员工类Employee,做为父类
 */
class Employee {
    String name; // 定义name属性
    // 定义员工的工作方法
    public void work() {
        System.out.println("尽心尽力地工作");
    }
}
 
/*
 * 定义讲师类Teacher 继承 员工类Employee
 */
class Teacher extends Employee {
    // 定义一个打印name的方法
    public void printName() {
    System.out.println("name=" + name);
    }
}
 
/*
 * 定义测试类
 */
public class ExtendDemo01 {
    public static void main(String[] args) {
        // 创建一个讲师类对象
        Teacher t = new Teacher();
        // 为该员工类的name属性进行赋值
        t.name = "小明";
        // 调用该员工的printName()方法
        t.printName(); // name = 小明
        // 调用Teacher类继承来的work()方法
        t.work(); // 尽心尽力地工作
    }
}

杨校老师课堂之Java面向对象知识点整理集锦2:https://developer.aliyun.com/article/1543050

目录
相关文章
|
8月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
232 1
|
10月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
463 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
8月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
349 0
|
10月前
|
存储 Java 程序员
Java 基础知识点全面梳理包含核心要点及难点解析 Java 基础知识点
本文档系统梳理了Java基础知识点,涵盖核心特性、语法基础、面向对象编程、数组字符串、集合框架、异常处理及应用实例,帮助初学者全面掌握Java入门知识,提升编程实践能力。附示例代码下载链接。
406 0
|
10月前
|
Java 编译器 数据安全/隐私保护
Java 大学期末考试真题与答案 含知识点总结 重难点归纳及题库汇总 Java 期末备考资料
本文汇总了Java大学期末考试相关资料,包含真题与答案、知识点总结、重难点归纳及题库,涵盖Java基础、面向对象编程、异常处理、IO流等内容,并提供完整代码示例与技术方案,助你高效复习备考。
984 3
|
9月前
|
安全 Java 编译器
Java面向对象
本文深入讲解了Java面向对象编程(OOP)的四大特性:封装、继承、多态与抽象,以及方法的设计与使用。通过示例展示了如何用类和对象组织代码,提升程序的可维护性与扩展性。
|
10月前
|
存储 缓存 安全
Java基础 - 知识点
Java基础知识点涵盖语言特性、面向对象与基本数据类型、缓存池机制、String类特性、参数传递、类型转换、继承、抽象类与接口区别、重写与重载、Object通用方法及关键字使用等核心内容,是掌握Java编程的重要基石。
157 0
|
10月前
|
存储 Java 测试技术
Java基础 - 面向对象
面向对象编程是Java的核心,包含封装、继承、多态三大特性。封装隐藏实现细节,提升代码可维护性与安全性;继承实现类间IS-A关系,支持代码复用;多态通过继承、重写与向上转型,实现运行时方法动态绑定,提升系统扩展性与灵活性。
170 0
|
10月前
|
缓存 安全 前端开发
Java 核心知识点与实战应用解析
我梳理的这些内容涵盖了 Java 众多核心知识点。包括 final 关键字的作用(修饰类、方法、变量的特性);重载与重写的区别;反射机制的定义、优缺点及项目中的应用(如结合自定义注解处理数据、框架底层实现)。 还涉及 String、StringBuffer、StringBuilder 的差异;常见集合类及线程安全类,ArrayList 与 LinkedList 的区别;HashMap 的实现原理、put 流程、扩容机制,以及 ConcurrentHashMap 的底层实现。 线程相关知识中,创建线程的四种方式,Runnable 与 Callable 的区别,加锁方式(synchronize
189 0