Java学习总结第十三天Java类(封装)

本文深入讲解了Java中的this引用、包的定义与使用、访问权限控制、封装原则、内部类特性以及匿名类的应用等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

this引用

关键字 this 与对象关联,它用于指示当前对象。

this的作用

1、区分类成员变量和方法的形参.

2、this关键字通常用于return语句中返回当前对象的引用。

3、在构造方法中调用其它构造方法

 

 

包的定义

包(package):一种将相关类及接口组织起来的集合体,既命名空间。

目的:

 1)避免重名冲突。

 2)实现访问权限控制。

声明方式:

package     name;

package 为声明包的关键字。

name  为指定的包名。

name 可以分层次,不同的层次用点号“.”分隔。

 

包的命名技巧

1、package名称的第一部分是反顺序的类的创建者的域名。

   例如 :package com.tsinghua.myJava;

                 [com.公司名称.地区.包名称]

2、把package名称分解为你机器上的一个目录。例如::myClass.java

 

 

包的引入

在一个类中引用另一个包中的类时,可用两种方式:

1.类长名(long name)即加上包名称的类名,如:

com.tsinghua.myJava.MyClass myClass = new com.tsinghua.myJava.MyClass( );

2.类短名(short name):用import关键字在类程序最前面引入包,然后使用该类名,如:

import com.tsinghua.myJava;

MyClass myclass = new MyClass();

声明方式:

     import pkg1[.pkg2].(classname|*);

1. 可用点号(.)来隔离多级包名。

2 . classname 表明直接引入该包中的具体类。

3 . * 表明JAVA编译器引入整个包。

在import中使用*的警告:

星号形式可能会增加编译时间,但对运行时间、性能和类的大小绝对没有影响。

如果引入的两个包中有同名类,编译器将保持沉默,除非你试图运行其中一个。否则给出一个编译时的错误。

 

访问权限

java中四种不同的限定词限定的成员(成员变量或成员方法),访问权限由大到小依次为:

1)public 公共的

可以被所有的类访问。

2)protected 受保护的

可以被这个类本身访问。

被它的子类(同一个包以及不同包中的子类)访问。

同一个包中的所有其他的类访问。

3)默认的/友好

被这个类本身访问。

被同一个包中的类访问。

4)private 私有的

只能被这个类本身访问。

如果一个类的构造方法声明为private,则其它类不能生成该类的一个实例。

 

Java中类的限定词的作用范围比较

 

 

实现类的封装

封装:将成员变量声明为私有的(private),再提供一个或多个公有(public)setXX() 和getXX()方法实现对该成员变量的访问和修改。

类中的私有成员变量/成员方法只能在该类内部调用,不能通过该类的对象调用。

封装的目的:

1、隐藏类的实现细节;

2、让使用者只能通过指定的方法访问数据,可以方便加入控制逻辑,限制不合理的操作;

3、便于修改,增强代码可维护性;

4、可进行数据检查。

 

内部类

将一个类定义置入另一个类定义中就叫作“内部类”

Ø 利用它可对那些逻辑上相互联系的类进行分组

Ø 并可控制一个类在另一个类里的“可见性”。

Ø 内部类对象保存了一个对外部类对象的引用。

Ø OuterClassName.this代表外部类对象的引用

Ø InnerClassName.this代表内部类对象的引用

 

 

1.Inner类是在Outer内部定义的

2.在Inner类中可以访问Outer类中的成员属性outer_I;

3.在Outer类中可在方法test()中创建内部类Inner的对象;

4.通过Outer类的对象调用test()方法最终就可以执行Inner类中的方法。

 

在内部类对象保存了一个对外部类对象的引用,当内部类的成员方法中访问某一变量时,如果在该方法和内部类中都没有定义过这个变量,内部类中对this的引用会被传递给那个外部类对象的引用。

 

类中定义的内部类特点

1、内部类可以直接访问外部类的成员,反之则不行。

2、内部类可以声明为private或protected。

3、内部类成员只有在内部类的范围之类是有效的。

private内部类调用方式:

1、在外部类的方法中实例化内部类,并调用自己的方法;

2、实例化外部类,并调用包含内部类的方法。

 

static内部类

定义格式

修饰符 static class name{ }

static内部类特点:

1、static内部类可以象一个普通外部类一样直接创建该对象。

2、static内部类只能访问外部类中的静态成员或方法。

3、static内部类可以声明static成员,但非static的内部类不可以。

4、修饰符没有任何限制。

 

1.Inner为静态内部类。

2.Inner不能访问names属性和PrintName()方法。

3.在外部类中可以直接创建该类的对象。

 

内部类如何被外部类引用

将内部类声明为非private的就可以通过外部类创建一个内部类的对象引用,并可通过该引用调用内部类自己定义的方法。

声明调用方法:

OuterClass outer = new OuterClass();

OuterClass.InnerClass inner = outer.new InnerClass ();

注:1、必须是外围类对象.new,而不能是外围类.new

2、在创建外围类对象之前,不可能创建内部类的对象(嵌套类除外)。

 

方法和作用域中的内部类

内部类并非只能在类里定义,也可以在几个程序块的范围之内定义内部类。

特点:

1、可访问外部类的成员变量。

2、只能访问所在方法中的final类型的局部变量,因为用final定义的局部变量相当于一个常量,它的生命周期超出方法运行的生命周期。

该类型的内部类调用方法:

直接通过外部类来调用内部类所在的方法。

OuterClass.innerOfOuterMethod( );

 

1、str为外部类的成员变量。

2、iArgs和 a都是方法amethod的局部final变量。

 

匿名类

1、和类有关的匿名类

   当使用类创建对象时,程序允许我们把类体与对象的创建组合在一起,也就是说,类创建对象时,除了构造方法还有类体,此类体被认为是该类的一个子类去掉类声明后的类体,称作匿名类。

2、和接口有关的匿名类

Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了接口的类去掉类声明后的类体,称作匿名类  .

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值