构造方法static匿名对象、封装、javaBean、this、package、import、访问权限

网友投稿 577 2022-05-30

构造方法、static、匿名对象、封装、javaBean、this、package、import、访问权限

构造方法:

1. 创建对象

2. 为字段初始化

特点:

方法名和当期类名一样;

不允许定义返回值类型

每个类至少有一个构造方法:公共无参的

格式: public 类名(){}

若显示的写了一个类的构造方法,默认的就会被取消;

构造方法、static、匿名对象、封装、javaBean、this、package、import、访问权限

构造方法的重载:

this([实参]);调用当前类的构造方法

注意: this([实参]);必须放在构造器的第一行;

我不想让外界创建对象:

此时只需要把构造方法 private 修饰;

不一定:学了反射,一切私有都是浮云;

static :

表示这一类事物的特征/状态或行为;

特点:

1. static 修饰的成员随着类的加载而加载;

2. 优先于对象的存在;

3. 被所有对象所共享;

4. 可以直接使用类名调用;

使用 static 修饰的方法或字段或内部类: 类成员

没有使用 static 修饰的方法或字段或内部类: 实例成员

调用类成员:

1.该成员所在类的类名.类成员;

2.该成员所在类的一个对象.类成员;(不建议使用, Java在底层也是把对象给转成类的)

在实例方法里能不能调用类成员? YES

在静态方法里能不能调用类成员? YES

调用实例成员:

该成员所在类的一个对象.实例成员;

不能直接使用类名调用;

在实例方法里调用实例成员? YES

在静态方法里调用实例成员? NO

匿名对象:

一个没有名字的对象, 创建了一个对象出来,没有赋给一个变量;

new Person();

特点: 只在堆里面开辟存储区域,

只能使用一次, 使用完就被销毁了;

...main...

{

Person p = new Person();

show(p);//必须传入一个Person对象

//

show(new Person());

}

static void show(Person p)

{

}

封装:

1.把状态和行为看做是一个整体,放在一个独立的模块(类)中;

2.把不想让外界知道的信息给隐藏起来,只提供外界所关心的方法;

在程序里的体现:

类里面所有的字段统统给私有起来,(使用private修饰);

每一个被私有化起来的字段,一般都得提供一对 getter/setter

private String name;

getter: 获取字段的值

public String getName()

{

return this.name;//return name;

}

setter: 给一个字段设置一个值

public void setName(String n)

{

this.name = n;

}

public void setName(String name)

{

//name = name;

//name = this.name;//ERROR

this.name = name;

}

boolean 类型没有getXXX方法,取而代之 isXXX

JavaBean的规范:

1.保证每一个类都有一个无参的公共的构造方法

2.每一个字段都得私有化起来

3.私有化起来之后,必须提供getter/setter

怎么去写getter/setter?

1.若字段的第二个字母是小写的话,那么就直接把字段的第一个字母大写,然后加在gett或set后面

2.若字段的第二个字母是大写的话,那么就直接把字段加在get或set后面

private String cPU;//故意写的

public String getcPU()

{

return cPU;

}

public void setcPU(String cPU)

{

this.cPU = cPU;

}

属性:什么才是真正的属性呢? 不是字段,不能把字段成为属性

是根据getter与 setter决定的:

this: 表示当前对象

谁调用方法谁就是当前对象

this.字段

this.方法

this(参数);//构造器调用构造器

this 和 static 不能共用

// 一个对象调用OOXX方法之后,又继续调用OOXX方法,如此循环...

//链式编程

p.show().show().show().show();

class Person

{

public Person show(){

//return Person的对象;

return this;

//返回调用者对象

}

}

//show()必须得让Person的一个对象来调用

new Person().show().show();

package 表示包:

给一个类声明一个包:

在这个类的源文件的第一行

package 包名.子包名...;

全限定名: 包名.子包名.....类名

编译:javac -d . 源文件.java

运行:java 全限定名

包名必须符合标识符: 全小写,不能使用 jdk里面的包名

cn.itcast.cd.项目名.模块名.组件名

cn.itcast.cd.erp.crm.util

jdk常见的包;

java.lang;//Java核心包 使用这个包下的类的时候,不需要我们手动的去导入需要使用的类

java.util;//Java工具类包

import: 表示 去哪个包下去找使用到的类;

存放位置: 存放于 类的声明之前, 放在 package 的后面;

使用: java.util.Date

import java.util.Date;

import java.util.*; 去java.util包去找你当前源文件需要使用到的类;

*表示类,

不能表示java.util下的子包的类;

Java里四大访问权限修饰符:

当前类 当前包 子类 任何地方

private YES

default(不写访问权限) YES YES

protected YES YES YES

public YES YES YES YES

Java

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【Flutter 专题】17 图解 ListView 下拉刷新与上拉加载 (二)【NotificationListener】
下一篇:(精华)2020年8月30日 二十三种设计模式(二十三)-访问者模式(Vistor Pattern)
相关文章