杨校老师课堂之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

目录
相关文章
|
1月前
|
安全 Java 编译器
揭秘JAVA深渊:那些让你头大的最晦涩知识点,从泛型迷思到并发陷阱,你敢挑战吗?
【8月更文挑战第22天】Java中的难点常隐藏在其高级特性中,如泛型与类型擦除、并发编程中的内存可见性及指令重排,以及反射与动态代理等。这些特性虽强大却也晦涩,要求开发者深入理解JVM运作机制及计算机底层细节。例如,泛型在编译时检查类型以增强安全性,但在运行时因类型擦除而丢失类型信息,可能导致类型安全问题。并发编程中,内存可见性和指令重排对同步机制提出更高要求,不当处理会导致数据不一致。反射与动态代理虽提供运行时行为定制能力,但也增加了复杂度和性能开销。掌握这些知识需深厚的技术底蕴和实践经验。
50 2
|
15天前
|
安全 Java Go
面向对象程序设计语言:Java
Java语言语法和C语言和C++语言很接近,很容易学习和使用,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的特性,Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧
32 2
|
1月前
|
Java 数据处理 开发者
【Java基础面试十二】、说一说你对面向对象的理解
这篇文章阐述了面向对象是一种以类和对象为基础,通过封装、继承和多态等概念来模拟现实世界中的事物及其相互关系的程序设计方法,它强调以事物为中心进行思考和系统构造,与结构化程序设计相比,更符合人类的自然思维方式。
【Java基础面试十二】、说一说你对面向对象的理解
|
1月前
|
Java
【Java基础面试十三】、面向对象的三大特征是什么?
这篇文章介绍了面向对象程序设计的三大基本特征:封装、继承和多态,其中封装隐藏对象实现细节,继承实现软件复用,多态允许子类对象表现出不同的行为特征。
【Java基础面试十三】、面向对象的三大特征是什么?
|
3天前
|
Java 开发者
Java 面向对象
Java 是一种面向对象的编程语言,通过对象与类的概念组织代码和数据。面向对象编程的核心包括类、对象、继承、多态、封装和抽象。类是对象的蓝图,定义了属性和行为;对象则是类的实例。继承允许子类继承父类的属性和方法,增强代码复用性;多态则支持通过相同接口调用不同类型对象的行为,包括方法重载和重写。封装通过公共方法隐藏对象细节,提高安全性;抽象则对对象特征进行提炼,通过抽象类和接口实现。理解这些概念有助于设计高效、可维护的 Java 应用程序。
|
10天前
|
Java 开发者
Java编程之旅:探索面向对象的力量
【9月更文挑战第16天】在编程的世界中,Java以其强大的面向对象编程特性而闻名。本文将带你走进Java的世界,一起探索类与对象的奥秘,学习如何通过封装、继承和多态性构建健壮的软件系统。无论你是初学者还是有经验的开发者,本文都旨在提供实用的代码示例,帮助你提升Java技能。准备好开始这段旅程了吗?让我们启程吧!
|
1月前
|
Java 开发者 C++
|
1月前
|
存储 Java
Java面向对象面试题总结(上)
在Java中,重写(Override)与重载(Overload)是两个重要的概念,关联到方法的定义与调用。重写是指子类对继承自父类的方法进行新的实现,以便提供子类特有的行为,其关键在于方法签名一致但方法体不同。重载则允许在同一个类中定义多个同名方法,只要参数列表不同即可,以此提供方法调用的灵活性。重写关注多态性,而重载强调编译时多态。
21 1
|
27天前
|
存储 Java 数据库连接
Java编程之旅:从基础到高级,探索面向对象的力量
【8月更文挑战第31天】本文是一篇深入浅出的Java编程指南,旨在通过生动的例子和实际代码演示,带领读者从Java的基础语法起步,逐步深入到面向对象的核心概念,最后探讨如何在实际项目中应用这些知识。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的见解和实用的技巧。
|
1月前
|
Java 数据安全/隐私保护
【Java 第五篇章】面向对象
封装隐藏对象内部细节,仅暴露出必要的接口,提升代码的安全性和可维护性。通过private修饰属性并提供公有的getter和setter方法实现。权限修饰符从private到public控制着访问范围,从类内到整个项目。封装可用于类及其内部结构。
16 0