构造方法、static、匿名对象、封装、javaBean、this、package、import、访问权限
【摘要】
构造方法、static、匿名对象、封装、javaBean、this、package、import、访问权限
构造方法: 1. 创建对象 2. 为字段初始化 特点: 方法名和当期类名一样; 不允许定义返回值类型 每个类至少有一个构造方法:公共无参的 格式: public 类名(){} ...
构造方法、static、匿名对象、封装、javaBean、this、package、import、访问权限
-
-
构造方法:
-
1. 创建对象
-
2. 为字段初始化
-
-
-
特点:
-
方法名和当期类名一样;
-
不允许定义返回值类型
-
-
-
每个类至少有一个构造方法:公共无参的
-
格式: public 类名(){}
-
-
-
若显示的写了一个类的构造方法,默认的就会被取消;
-
-
-
构造方法的重载:
-
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
-
-
文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。
原文链接:brucelong.blog.csdn.net/article/details/81564567
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)