Java学习记录day04

这篇博客详细介绍了面向对象编程的基本概念,包括类与对象、属性和方法的使用、方法重载、可变参数列表、值传递机制、递归以及封装和隐藏。讲解了如何在Java中实现这些概念,并探讨了构造器、JavaBean和this关键字的应用。内容涵盖了面向对象编程的核心要素,帮助初学者理解面向对象设计的重要性。

day04

面向对象

面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。

面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑由谁来做。

面向对象的两个要素:

类:是对一类事物的描述,是抽象的,概念上的定义

对象:是实际存在的该类事物的每个个体,因此也称为实例(instance)

  • 面向对象程序设计的重点就是类的设计
  • 设计类:就是设计类的成员

对象就是类的实例化

类和对象

属性 = 成员变量 = Field

方法 = (成员)方法 = 函数

类描述了对象的基础属性和功能,而想要使用一个具体的对象时,则需要去创建一个对象(即实例化),然后赋予其独特的属性,这样就通过类创建了一个实际存在的对象。

如果创建了一个类的多个对象,那么每个对象都拥有其独特的属性(非static)。

这意味着每个对象都是独立的,修改某一个对象时,不会影响到另一个对象。

类中属性的使用

属性(成员变量) 和 局部变量的区别

相同点:

  • 定义变量的格式:数据类型 变量名 = 变量值
  • 先声明,后使用
  • 变量都有其对应的作用域

不同点:

  • 在类中声明的位置不同:属性是直接定义在类中,而局部变量定义在方法内、代码块中、构造器的变量。
  • 属性可以使用修饰符如:public、private、缺省、protected ,局部变量不可以使用修饰符。
  • 模式初始化的类型:类的属性,根据其类型,都有默认初始化值,局部变量没有初始化值,所以在调用时,第一要显式的去传参。
  • 在内存中加载的位置:属性是在堆内存中,局部变量是在栈内存中

类中方法的声明和使用

方法的声明:权限修饰符 返回值类型 方法名(形参){

​ 方法体

}

返回值:当有返回值时,则返回对应类型的数据,不然会报错,而没有返回值时,return表示方法结束。

形参列表,可以是0个、1个、2个…… 参数中间用(,)隔开。

方法名:属于标识符,主要是遵循规范,见名知意

方法的重载

一个类中允许存在多个方法名相同的方法,前提是他们的参数个数或者参数类型不同即可。

方法是否重载与返回值的类型无关。

方法体现的是编译时的多态性。

int add(int a,int b);
int add(int a,int b,int c);
int add(double a,double b);

可变参数列表

可变个数形参:数据类型 … 变量名

public void show(String ... strs)

如果列表参数中,不止可变个数形参,可变个数形参需要放到列表最右

public void show(int id,String ... strs)

可变个数形参在方法的参数中,最多存在一个

方法参数的值传递机制

Java里方法的参数传递方式只有一种:值传递。

形参是基本数据类型,将实参基本数据类型变量的“数据值”传递

形参是引用数据类型,将实参引用数据类型变量的“地址值”传递

简而言之,基本数据类型传数据,引用数据类型传地址

int[] i = new int[10];
System.out.println(i);//[I@74a14482   返回为地址值

char[] c = new char[10];
System.out.println(c);//           返回空,实际上是返回字符串

递归

递归方法:一个方法体内调用它自身。

//计算1-100之间所有数的和
public int getSum(int n){
        int total = 0;
        if(n == 1){
            return 1;
        }else {
            return n + getSum(n-1);
        }
    }

面向对象的特征之一:封装和隐藏

隐藏对象内部的复杂性,只对外公开简单的接口。便于外接调用,从而提高了系统的可扩展性、可维护性。通俗来说,就是把该隐藏的隐藏起来,该暴露的暴露出来,这就是封装性的设计思想。

封装性的体现:

将类的属性私有化(private),同时提供公共(public)的方法去获取(getter)和设置(setter)属性。

不对外暴露的私有方法、单例模式……

修饰符

封装性的体现:需要权限修饰符来配合

Java规定的4种权限:private、缺省、protected、public

修饰符类内部同一个包不同包的子类同一个工程
privateYes
default(缺省)YesYes
protectedYesYesYes
publicYesYesYesYes

4种权限可以修饰类以及类的内部结构:属性,方法,构造器,内部类

修饰类,只能用缺省和public

构造器

类的结构之三:构造器(constructor)的使用

构造器的作用:创建对象

如果没有显式的定义类的构造器,系统会默认提供一个空参的构造器。

构造器的定义:权限修饰符 类名(){}

一个类中定义的多个构造器,彼此构成重载

一旦我们显式的定义了类的构造器之后,系统就不在提供默认的空参构造器

JavaBean

JavaBean是一种Java语言写成的可重用组件

JavaBean:主要是由:public的类,一个无参的构造器,属性及其setter和getter构成

this关键字

this关键字的使用,this用来修饰、调用:属性、方法、构造器

this可以理解为:当前对象

在类的方法中,我们可以使用"this.属性"和”this.方法“的方式,调用当前对象属性和方法。一般情况下开省略,但当方法的形参和属性名一样时,需要显式的使用“this.属性”的方式,表示这个变量是属性,而不是形参。

this调用构造器:this(形参列表);

构造器无法通过this(形参列表)去调用自己

this(形参列表)调用构造器,必须声明在当前构造器首行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值