JavaSE第7篇:封装

本文介绍了Java编程中的封装、四种权限修饰符、构造器的使用、JavaBean规范、UML类图以及this关键字、package和import关键字的作用。详细讲解了这些概念在实际编程中的应用和注意事项。
摘要由CSDN通过智能技术生成

前言

不管学什么都可以按3w: what? why? how?:首页学习的这个技术是什么? 为什么要出现这个技术? 如何使用这个技术?


一、封装

封装就是将类的属性私有化,提供公有的方法访问私有属性

不对外暴露打的私有的方法

单例模式

1、好处:

1.只能通过规定的方法来访问数据

2.隐藏类的实例细节,方便修改和实现

2、使用

1.属性私有化private

2.创建setter和getter方法用于属性的读写

3.setter和getter方法加入属性控制语句,用于对属性的合法值进行判断


二、四种权限修饰符

封装性需要权限修饰符

1、priavte、 缺省default、protected、public

public2、修饰 类及类的内部结构:属性、方法、内部类、构造器

修饰类只能用缺省default和public

总结
Java提供了四种权限修饰符来修饰类及类的内部结构、体现了类及类部结构的可见性大小

三、构造器

1、作用

1、创建对象 new + 构造器 new Person()

2、初始化对象的信息

3、一个内中定义的多个构造器构成重载

4、显示的定义了类的构造器、系统不会提供默认的空参构造器

5、一个类中至少存在一个构造器

2、说明

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

定义构造器: 权限修饰符 类名(形参列表){}

    public Person(){}

3、属性赋值的过程

属性赋值的先后顺序

① 默认初始化

public class Person {

    //属性或成员变量
     String pName;//默认null
 }

② 显示初始化 和 ⑤在代码块中赋值

public class Person {

    //属性或成员变量  显示初始化值 
     int age=1;
}     

③ 构造器中赋值或初始化

④ 通过对象 . 方法 或者 对象 . 属性单点方式赋值

以上的操作先后顺序:① (②和⑤) ③ ④

四 、JavaBean的使用

JavaBean符合以下标准:

1、类是公共的

2、有一个无参的公共构造器

3、有属性、并且有对应的get、set方法

五、UML类图

uml

六 、Java关键字

1、this说明

this关键字: 哪个对象调用了this所在的函数,this就代表哪个对象

== this.属性或方法调用当前的属性或方法 封装对象的属性时经常会使用this==

2 、this可以用来修饰属性、方法

this修饰属性和方法

    public String getName() {
        //this.方法
        this.study();
        //this.属性
        return this.name;
    }

① 在类的方法中 可以使用this.属性或者this.方法的方式 调用当前对象的属性或方法,通常选择省略this.
特殊情况方法形参和类属性同名我们使用this.变量的方式表明此变量是属性 而不是形参

② 在类的构造器中 可以使用this.属性或者this.方法的方式 调用当前正在创建的对象属性或方法,通常选择省略this.
特殊情况构造器的形参和类属性同名我们使用this.变量的方式表明此变量是属性 而不是形参


3、 this调用构造器

如何在构造器中调用另一个构造器?

this();调用空参构造器

this(age);this调用带参构造器

1、我们在类的构造器中显示的使用this(形参列表)调用本类中的其它构造器

2、构造器中不能通过this(形参列表)调用自己

3、如果一个类中有n个构造器,最多有n-1使用了this(参数列表),如果最后一个构造器调用了其它构造器会一直循环形成不了闭环

4、规定:this(形参)必须在首行

5、构造器内部,最多只能声明一个this(形参列表)方式调用其它构造器

map

以上HashMap源码中this(形参列表)调用其它构造器可以降低代码冗余

4、 package关键字

1、项目中类的管理、类在包下
2、使用package声明类或接口所属的包,声明在源文件首行
3、包属于标识符,符合标识符命名规范
4、点的结构,点一次代表一层文件目录
补充:同一个包下不能同名接口或类。不同的包下可以命名同名的接口或者类

5、 import关键字

1、在源文件中显示的导入指定包下的类和接口
2、声明在包和类的声明之间
3、如果多个包并列写入即可
4、可以使用xxx.*的方式表示这个包下所有结构
5、java.lang下的包可以省略导入
6、本包下的类或者接口不用导入
7、不同包下的同名类,至少一个类全类名显示导入
8、import static:导入指定类或者接口中的静态结构

6、 super关键字

1、super 为父类的

2、super可以用来调用:属性、 方法、 构造器

3、使用:
属性
在子类的方法或者构造器中属于super.属性或super.方法的方式调用父类的属性方法。但是通常习惯省略super.

在子父类中出现两个同名的属性,在子类中调用父类的属性,用this和super区分调用的哪个属性

方法
当子类重写了父类的方法以后,在子类的方法中调用父类中被重写的方法时,用super.方法是父类的方法

构造器:
在子类的构造器中显示的使用super(形参列表)的方式调用父类中声明的指定的构造器

super(形参列表)的方式使用必须声明在子类构造器中的首行

在类的构造器中针对于this(形参列表)或super(形参列表)只能在本类的构造器调用(this)和父类的构造器调用(supper)二选一 如果没有写一般默认super()空参构造器

在类的多个构造器中,至少有一个类的构造器中使用了super(形参列表),调用父类中的构造器

7、 instanceof

    @Test
    public void test1() {
        //obj instance class obj是引用对象 class是类或者接口
        //obj是class的实例对象
        //obj是class的直接子类或者间接子类
        //obj是class接口的实现类

       Animal animal = new Cat();
        //obj instance class obj是引用对象 class是类或者接口
        if(animal instanceof Animal){
            System.out.println("obj是class的实例对象");
        }
        //Dog dog = (Dog) animal;
        if(animal instanceof Cat){
            Cat cat = (Cat) animal;
            System.out.println("obj是class的直接子类或者间接子类");
        }
        ArrayList arrayList = new ArrayList();
        if (arrayList instanceof List) {
            System.out.println("obj是class接口的实现类");
        }
    }

8、 static

static可以修饰:属性、方法、代码块、内部类

什么时候使用static
属性是可以被多个对象共享的,不会随着对象的不同而不同。比如银行利率属性

操作静态属性的方法为静态方法 通常工具类的方法为静态方法

static的特点:

1,static是一个修饰符,用于修饰成员。
2,static修饰的成员被所有的对象所共享。
3,static优先于对象存在,因为static的成员随着类的加载就已经存在了。
4,static修饰的成员多了一种调用方式,就可以直接被类名所调用 。 类名.静态成员 。
5,static修饰的数据是共享数据,对象中的存储的是特有数据。

成员变量和静态变量的区别?

1,两个变量的生命周期不同。
成员变量随着对象的创建而存在,随着对象的被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
2,调用方式不同。
成员变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。
3,别名不同。
成员变量也称为实例变量。
静态变量称为类变量。
4,数据存储位置不同。
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据.
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据.

类变量(静态变量)与实例变量(成员变量)的内存解析
在这里插入图片描述

静态使用的注意事项:

1,静态方法只能访问静态成员。(非静态既可以访问静态,又可以访问非静态)
2,静态方法中不可以使用this或者super关键字。
3,主函数是静态的。

初始化块
静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

代码块
1,局部代码快对局部变量的生周期进行控制 2,构造代码块对所有对象进行初始化。
3,静态代码块。对类进行初始化。

9、 final

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值