栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java学习笔记(一百二十六)】面向对象(一)之类与对象的构成

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java学习笔记(一百二十六)】面向对象(一)之类与对象的构成

文章目录
    • 本文章由公号【开发小鸽】发布!欢迎关注!!!
    • 一、面向对象
      • (一)POP与OOP
      • (二)面向对象的三大特征
    • 二、类与对象
      • (一)概述
      • (二)类的成员构成
      • (三)对象
      • (四)匿名对象
      • (五)成员属性
        • 1.声明格式
        • 2.修饰符
        • 3.属性变量的分类
      • (六)成员方法
        • 1.声明格式
        • 2.方法重载
        • 3.可变个数的形参
        • 4.方法参数的值传递
      • (七)构造器
        • 1.语法格式
        • 2.构造器注意事项

本文章由公号【开发小鸽】发布!欢迎关注!!!

老规矩–妹妹镇楼:

一、面向对象 (一)POP与OOP

        所谓的POP指的是:Procedure Oriented Programming(面向过程)

        所谓的OOP指的是:Object Oriented Programming(面向对象)

        面向过程,强调的是过程的功能行为,以函数为最小单位,只考虑怎样完成这个过程;

        面向对象,强调的是构建具备功能的对象,以类/对象为最小单位,考虑的是谁来完成这个过程,更加符合人类在日常生活中的思维习惯,包括抽象、分类、继承、聚合、多态等;


(二)面向对象的三大特征

        封装、继承、多态


二、类与对象 (一)概述

        类是对一类事物的描述,是抽象的概念;

        对象时实际存在的每类事物的个体,因此也称为实例;

        面向对象的程序设计的重点就是类的设计;


(二)类的成员构成

        一个类中的成员构成包括:类的成员变量、类的构造器、成员方法、代码块、内部类;

        通常在定义类时,需要考虑类的修饰符、类名,如public修饰符表示公开的类,private修饰符表示私有的类。

(三)对象

        在定义了类后,即可通过类的实例化创建类的对象,使用new来创建类的实例对象,并通过“对象名.对象成员”的方式访问对象成员,其中包括属性和方法。

        当对象生成后,如数组一样在栈空间中入栈对象的地址,而在堆空间中分配对象的内存空间,与数组的内存空间分配类似。


(四)匿名对象

        所谓匿名对象即不定义对象的句柄,直接调用该对象的方法等,如下所示:

new Person().eat();

        这种匿名对象多用于单次方法的调用,或是作为一个实参传递给方法调用。


(五)成员属性 1.声明格式

        一个类中总会定义一些类的成员属性变量,用以描述该类的相关信息,在定义类的成员属性变量时,要遵循一定的规则,采用如下所示的方式定义属性变量:

修饰符 数据类型 属性名 = 初始化值;

2.修饰符

        其中,初始化值可以省略不写。常见的修饰符包括权限修饰符,如private、缺省、protected、public;以及其他修饰符,如static、final等。权限修饰符能够限制该成员属性变量在各个类中的可见性,有效地保护类中的数据信息。

public class Person{
	private int age; // 声明private变量 age
	public String name = “Lila”; //声明public变量 name
}

3.属性变量的分类

        对于类中的属性变量,有多种的分类方式,也会产生多种变量名称,这些我们都需要牢记于心。首先从整体上看,变量一定不会脱离类而独立存在,在类中变量分为成员变量与局部变量。所谓的成员变量指的是在类体内直接声明的变量,而局部变量则包括在方法、构造器内定义的形参,方法内定义的变量以及代码块内定义的变量。

        对于类中的成员变量又分为实例变量与类变量,所谓的实例变量指的是不用static修饰的变量, 即不是static静态变量,只能通过对象进行访问;而类变量,即使用static进行修饰,可以直接通过类名进行访问。以下是成员变量与局部变量之间的差别:



(六)成员方法

        类中的方法时类或对象行为的抽象,用以完成某个功能,因此将该种功能封装为一个可以重复调用的方法。

1.声明格式

        成员方法的声明格式如下所示,与普通方法类似:

修饰符  返回值类型  方法名 ( 参数类型 形参1,  参数类型 形参2, …. ){
	方法体程序代码
	return  返回值;
}

        其中修饰符也包括权限修饰符、static、final等,要注意的是return在无返回值时也可以使用表示结束方法,在return之后就不能写任何的表达式了。其余格式较为简单,因此无需进行描述。

2.方法重载

        在一个类中,可以声明多个同名方法,但也需要保证这些方法的参数格式或者参数类型不相同,注意方法的重载与方法的返回值类型无关,只关注参数列表的不同。如下所示:

//返回两个整数的和
int add(int x,int y){return x+y;}
//返回三个整数的和
int add(int x,int y,int z){return x+y+z;}

        我们最常用的输出语句System.out.println()就是典型的重载方法,如下所示:

public void println(byte x)
public void println(short x)
public void println(int x)

        注意,当两个方法的参数列表中的多个参数类型相同,但是相同类型的形参位置不同时,也会构成方法的重载,如下所示:

void show(int x,char y,double z){}
int show(int a,double c,char b){}

3.可变个数的形参

        从JDK5.0开始提供了Varargs机制,允许直接定义能和多个实参相匹配的形参,来更加简单地传递个数可变的实参。如下所示,同时传入多个同一类型的变量:

//JDK 5.0以前:采用数组形参来定义方法,传入多个同一类型变量
public static void test(int a ,String[] books);
//JDK5.0:采用可变个数形参来定义方法,传入多个同一类型变量
public static void test(int a ,String…books);

        可以看到的是,数组也可以发挥同样的作用,其实可变形参就是传入了一个数组形参,因此数组形参与可变形参之间是不能重载的!!!

        同时要注意的是,当方法的参数中存在可变形参时,需要将可变形参放在形参声明的最后位置,不然的话由于可变形参的数量是不确定的,编译器难以区分!在一个方法的形参位置,最多只能声明一个可变形参。

4.方法参数的值传递

        Java中方法的参数传递方式为值传递,即将实际参数值的副本传给形参,对于形参是基本数据类型的,将实参基本数据类型变量的“数据值”传递给形参;对于形参是引用数据类型的,将实参引用数据类型变量的“地址值”传递给形参。

(七)构造器

        构造器的作用是创建对象,为对象进行初始化,它具有与类相同的名称,且不声明返回值类型,不能被static、final、synchronized、abstract、native等修饰符修饰,不能带有return语句返回值。

1.语法格式
修饰符 类名 (参数列表) {
	初始化语句;
}

        构造器与当前类的名称相同,修饰符可以采用常见的权限修饰符,如下所示:

public class Animal{

​	private int age;

​	public Animal(){

​		ages = 4;

​	}

}

2.构造器注意事项

        在每个Java类中,至少都有一个构造器。构造器一般分为两类,一类是默认提供的隐式无参构造器,即使我们不显式定义类的构造器也会存在一个隐式的无参构造器,该默认构造器的修饰符与所属类的修饰符是一致的;另一类是显式定义的构造器,可以是有参或是无参的,一旦显式定义了构造器,则默认的无参构造器是不会提供的,需要显式地定义一个无参构造器。

        每个类中可以重载多个有参构造器,可以供多种方式初始化类的对象,方便创建各种不同的对象,同时需要注意的是,子类是不能继承父类的构造器的,但可以调用父类的构造器方法。

        构造器的修饰符与所属类的修饰符是一致的**;另一类是显式定义的构造器,可以是有参或是无参的,一旦显式定义了构造器,则默认的无参构造器是不会提供的,需要显式地定义一个无参构造器。

        每个类中可以重载多个有参构造器,可以供多种方式初始化类的对象,方便创建各种不同的对象,同时需要注意的是,子类是不能继承父类的构造器的,但可以调用父类的构造器方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031281.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号