Java学习笔记之——面向对象

之前学cpp的时候已经学过了,在此对java的面向对象也记录熟悉一下哈~

之前博文《Android学习笔记之——Android Studio的安装(3.6版本)、Java的基本语法及Android的概述 》有介绍过如何基于android studio进行java开发,但是本博文不打算对代码进行运行(虽然建议学习的时候边看边敲)

 

目录

方法

方法的定义

方法的调用

使用方法的一些注意事项

方法的重载(Overload)

面向对象

概述

类和对象

类的定义

构造方法

创建对象

封装

This方法

继承

多态

其他知识点笔记

数组

Java中内存划分

参考资料


 

方法

Java方法是语句的集合,它们在一起执行一个功能。

  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用

 

  • 方法定义的顺序无所谓
  • 一个方法内部不能定义另外一个方法
  • 方法必须调用才会执行

方法的定义

修饰符 返回值类型 方法名(参数类型 参数名){
    ...
    方法体
    ...
    return 返回值;
}

方法包含一个方法头和一个方法体。下面是一个方法的所有部分:

  • 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。如:public static
  • 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void
  • 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
  • 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。(如果有多个,用逗号)
  • 方法体:方法体包含具体的语句,定义该方法的功能。
  • return:首先停止方法,其次将后面的返回值返回去调用处

定义方法时。三个注意点:

  • 返回值类型
  • 方法名称
  • 参数列表

 

方法的调用

方法名称(参数);

方法调用的三种格式

  1. 单独调用:方法名称(参数)
  2. 打印调用:Sytem.out.println(方法名称(参数));
  3. 赋值调用:变量=方法名称(参数)

而对于返回值为void的方法,只能单独调用。

 

Java学习笔记之——面向对象_第1张图片 方法调用流程
Java学习笔记之——面向对象_第2张图片 有无返回值的方法调用

使用方法的一些注意事项

Java学习笔记之——面向对象_第3张图片

 

方法的重载(Overload)

就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表(参数的数目、类型不同、多参数的顺序不同)

Java编译器根据方法签名判断哪个方法应该被调用。

方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。

重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型的不同来重载方法。所以方法的重载与参数的名称及返回值的类型无关。

 

面向对象

概述

程序中有面向过程和面向对象两种。

面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲历亲为,详细处理每一个细节。

Java学习笔记之——面向对象_第4张图片

面向对象:不关心具体的步骤

Java学习笔记之——面向对象_第5张图片

面向对象的三大特征:封装、继承、多态

类和对象

  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • :类是一个模板,它描述一类对象的行为和状态。一组相关属性(状态信息)和行为(做什么)的集合。

类是对一类事物的描述,是抽象的。对象是一类事物的实例,是具体的。类是对象的魔板,对象是类的实例

类的定义

public class 类名称{

    成员变量
        变量类型 名称

    成员方法
        方法的声明(成员方法没有static)
}

成员变量:对应事物的属性。直接定义在类当中,在方法的外边

成员方法:对应事物的行为。不要写static关键字

 

一个类可以包含以下类型变量:

  • 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
  • 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
  • 类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。

局部变量与成员变量的区别:

Java学习笔记之——面向对象_第6张图片

Java学习笔记之——面向对象_第7张图片

 

构造方法

每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。

在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

Java学习笔记之——面向对象_第8张图片

 

创建对象

Java学习笔记之——面向对象_第9张图片

标准的类

Java学习笔记之——面向对象_第10张图片

 

 

封装

在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

要访问该类的代码和数据,必须通过严格的接口控制。

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

 

封装在java中的体现:

  1. 方法就是一种封装
  2. 关键字private也是一种封装

一旦使用使用private修饰,那么本类以外不能直接访问。进而可以提高代码的安全性

而间接访问private成员变量,就是定义一对Getter/Setter方法。

Java学习笔记之——面向对象_第11张图片

修改属性的可见性来限制对属性的访问(一般限制为private),例如:

public class Person {
    private String name;
    private int age;
}

这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如:

public class Person{
    private String name;
    private int age;
​
    public int getAge(){
      return age;
    }
​
    public String getName(){
      return name;
    }
​
    public void setAge(int age){
      this.age = age;
    }
​
    public void setName(String name){
      this.name = name;
    }
}

采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。

This方法

Java学习笔记之——面向对象_第12张图片

this来指代当前的类。通过谁调用的方法,谁就是this

 

继承

继承是多态的前提。

继承主要解决的问题是:共性抽取

Java学习笔记之——面向对象_第13张图片

格式:

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

关于同一个类中变量重名

Java学习笔记之——面向对象_第14张图片

如果不写this和super的话,访问的方法是就近原则。

方法的重写与重载

Java学习笔记之——面向对象_第15张图片

Java学习笔记之——面向对象_第16张图片

关于继承中的构造方法

Java学习笔记之——面向对象_第17张图片

super关键字

Java学习笔记之——面向对象_第18张图片

this关键字

Java学习笔记之——面向对象_第19张图片

 

 

多态

多态是同一个行为具有多个不同表现形式或形态的能力。

多态就是同一个接口,使用不同的实例而执行不同操作,如图所示

Java学习笔记之——面向对象_第20张图片

extends继承或者implements实现是多态性的前提。

Java学习笔记之——面向对象_第21张图片

Java学习笔记之——面向对象_第22张图片

Java学习笔记之——面向对象_第23张图片

Java学习笔记之——面向对象_第24张图片

Java学习笔记之——面向对象_第25张图片

成员变量与成员方法的规则不一样!

Java学习笔记之——面向对象_第26张图片

多态的作用

Java学习笔记之——面向对象_第27张图片

 

其他知识点笔记

数组

  1. 数组是一种引用的数据类型
  2. 数组当中的数据类型必须统一
  3. 数组的长度在程序运行期间不可改变。

初始化方法:

  1. 动态初始化(指定长度)   
    数据类型 [] 数组名称=new 数据类型[数组的长度];
    动态初始化可以拆分
  2. 静态初始化(指定内容)
数据类型 [] 数组名称=new 数据类型[] (元素1,元素2,...);
Java学习笔记之——面向对象_第28张图片 静态初始化可以拆分
  • 直接打印数组的名称,得到的是数组对应的地址。
  • 数组[数字]才是对具体元素的引用,从0开始,注意是中括号

数组长度在程序运行过程中不可改变。通过数组.length来获取长度

 

Java中内存划分

Java学习笔记之——面向对象_第29张图片

API

Java学习笔记之——面向对象_第30张图片

ArrayList

长度为任意可变的

为泛型,也就是装在集合当中的所有元素,全部都是统一的什么类型。

注意,泛型只能是引用类型,不能是基本类型。

Java学习笔记之——面向对象_第31张图片

static

多个对象共享同一个数据。

 

参考资料

https://www.runoob.com/java/java-methods.html

 

 

 

 

 

 

你可能感兴趣的:(Android)