面向对象2

本文深入讲解了Java中的面向对象特性,包括对象的创建与引用、值传递与引用传递的概念,详细阐述了this关键字的作用以及static关键字的应用,如静态方法和变量。同时,介绍了代码块的分类及执行时机,探讨了类加载的条件。此外,还讨论了包的功能、命名规则以及import关键字的使用。最后,解析了权限修饰符的不同访问级别及其应用场景。
摘要由CSDN通过智能技术生成

面向对象2

对象与引用

创建对象

Person zs = new Person("张三"22);

Person zs:在栈空间声明一个变量;

new Person(“张三”,22):在堆空间创建并存储的对象;

= :把对象在内存中的地址赋给左边的变量,左边的变量只是有对象的引用地址。

值传递与引用传递

值传递(形参类型为基本数据类型):实参把值传给形参,是两个不同的存储单元,故方法执行中形参值改变不影响实参的值。

public class Demo {
    //基本类型值传递
    public static void main(String[] args) {
        Demo d = new Demo();
        int a = 20;
        d.test(a);
        System.out.println(a);
    }
      //形参b,用实参a的值直接对b进行了赋值,在内存中有两个独立的存储空间 a,b
    public void test(int b){
        b = 10; //b的值发生改变,不会影响到a的值
    }
}

引用传递(形参类型为引用数据类型):也称值传递,实参是对象,实参与形参指向同一个地址,故方法执行中形参的改变会影响实参的值。

public class Demo {
    //引用类型 在传递时,传的是对象的地址
    public static void main(String[] args) {
        Demo d = new Demo();
        Person zs = new Person("小红", 19);
        d.test(zs);//只是把对象的地址传递给了p
        System.out.println(zs.name);//输出为李四
    }
    public void test(Person p){ //p和zs指向的是同一个对象
          p.name = "小明";
    }
}

this关键字

声明格式:this.成员变量名

this表示当前操作的对象,在成员方法、构造方法中使用的变量,使用this调用;

用this关键字引用成员变量、成员方法;

用来区分成员变量和局部变量。

static关键字

static

用来修饰属性、方法、代码块、内部类;

被static修饰的内容随着类的加载而加载,优先于对象存在,被所有对象共享,可以通过类名直接调用(静态方法、静态变量建议使用类名调用);

类变量,和类一样只有一份;

常量一般修饰为static。

static修饰方法(类方法)

静态方法不能使用非静态的成员变量,静态资源随着类先加载,非静态资源随着对象的创建而加载;

非静态方法可以使用静态变量,非静态方法必须通过对象来调用,对象创建之前先加载类

静态变量和非静态变量的区别

(1)静态变量随着类的加载而加载,优先于对象存在,通过类名来调用;非静态变量必须通过对象来调用,对象创建之前先加载类。

(2)静态变量是全局变量,被所有对象共享;非静态变量是局部变量,不共享。

(3)静态方法不能使用非静态的成员变量;非静态方法可以使用静态的成员变量。

代码块

代码块:类似于一个没有名字的方法。

代码块分类

实例代码块:在创建对象后执行,调用构造方法之前,每创建对象一次,调用一次。

{
     System.out.println("实例代码块");
}

静态代码块:静态代码块在类加载的时候执行,只执行一次,多个静态代码块按先后顺序。

static {
        System.out.println("静态代码块");
    }

类什么时候加载

main方法在哪个类中执行,这个类加载;

创建某个类的对象,这个类加载;

调用类中的静态属性、方法,这个类加载。

包的功能

为了更好地组织类,Java提供了包机制,区别于类名的命名空间(是类路径中的一部分 地址);

避免类重名;

按功能管理。

包的命名规则

包名都小写

第一级 项目类型:com(商业)、org(组织)、edu(教育)、gov(政府)

第二级 公司名称:oracle、sun、huawei

第三级 项目名称:oa、erp、cms

第四级 功能模块:窗口/视图层,数据访问层,服务层,工具类

​ 细分子模块

包的导入(import关键字)

import java.util.Date;

import:导入包中的其他类

java.util.Date:类的全名

Date:简称

权限修饰符

权限修饰符的功能

用来修饰类、成员变量、成员方法、内部类,控制对其访问权限。

权限修饰符的分类

public:公共的,类、成员变量、方法、内部类,在任何类中都可以访问到

protected:保护的 ,成员变量、成员方法、内部类

default:默认的(无),类、成员变量、方法、内部类

private:私有的,成员变量、方法、内部类,在本类中可以访问到。

在同包的其他类中只能访问公共的、受保护的、默认的;

私有权限只能在自己类中访问,同包其它类也不能访问;

不同包不同类公共的仍然可以访问,受保护的、默认的不能访问;

在不同包的子类中可以访问父类受保护成员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值