您的位置:首页 > 编程语言 > Java开发

JAVA知识点6(封装,无static的调用,构造方法,对象和引用及参数的传递、实例,关键字,包)

2019-04-13 11:00 453 查看

第六章

一.封装

1.为什么封装?好处?

封装之后,看不到这个事物复杂的一面,只看到简单的一面。(照相机复杂,但对使用照相机的人来说,操作简单方便)。
封装之后才会形成真正的“对象”,真正的“独立体”
封装意味着以后的程序可以反复使用,并且适用性较强,任何场合都可以使用。
提高了安全性

2.如何封装?
private int age;//属性私有化
public void setAge(int a){
age=a;//修改这个属性的值
}
public int getAge{
return age;//读取这个属性的值
}
//对外提供简单的操作入口,也就是外部程序想要访问age属性,必须通过这些简单的入口进行访问。

3.方法修饰符有无static关键字如何调用?

没有static关键字的方法,被称为实例方法(当一个行为/动作执行的过程当中是需要对象参与的,称之为实例方法,),实例方法怎么访问?“引用”
没有static关键字的变量,被称为实例变量,有static,称为静态变量(它们都是成员变量,在方法体外声明的)
(知识整理4中的详解)
有:类名.方法名(实参);
无:引用.方法名(实参);

二.构造方法

1.语法结构:
【修饰符列表】 构造方法名(形式参数列表){
构造方法体;

public Good(int a){//有参
a=5;
}
public Good(){//无参
}

2.与普通方法区别?
无返回值(void)且构造方法以类名一致。

3.构造方法的作用?
通过构造方法的调用,可以创建对象。
创建对象的同时,初始化实例变量的内存空间。(实例变量的内存空间是在构造方法执行过程中完成开辟的)

4.如何调用?
方法修饰符有无static关键字:
有:类名.方法名(实参);
无:引用.方法名(实参);

5.构造方法调用执行后,有返回值吗?
由于构造方法返回值类型就是类本身,所以“return”不需要编写。

6.当一个类没定义任何构造方法时,系统默认给该类提供一个无参的构造方法,称为缺省构造器。

7.构造方法支持重载机制,在一个类中可以编写多个构造方法。

三.对象和引用:

1.对象和引用的概念?
对象:目前在使用new运算符在堆内存中开辟的内存空间称为对象。
引用:是一个变量,不一定是局部变量,还可能是成员变量,引用保存了内存地址,指向了堆内存当中的对象。
所有访问实例相关的数据,都需要用“引用.”的方式访问,因为只有通过引用才能找到对象。
只有一个空的引用,访问对象的实例相关的数据会出现空指针异常。
class student{
Computer com;//com是一个引用【实例变量】
public static void dosome{
Computer cc;//cc是一个引用【局部变量】
}
}

2.参数的传递?
java语言当中方法调用的时候涉及到参数传递的问题,实际上**传递的是变量中保存的具体值。**有的时候是传的一个字面值,有的时候传的是一个java对象的内存地址(引用的传递是传的内存地址

关于引用的实例:

四.关键字

1.this

1.1.this是一个引用,是一个变量,变量中保存了内存地址指向了自身,this存储在JVM堆内存java对象内部,每一个对象都有一个this

1.2 this出现在“实例方法”当中,代表当前正在执行这个动作的对象。(故有static关键字的方法不存在this)

1.3 this的妙用:
private int id;
public void SetId(int id){
id=id;//由于java的就近原则,右边的局部变量(形参)id与左边的实际变量无关
}
private int id;
public void SetId(int a){
id=a;//正确
}
//另外,还可以使用this
private int id;
public void SetId(int id){
this.id=id;//正确,左边的表示实际变量id,右边的表示局部变量(形参)id
}
//结论:this什么时候不能省略?用来区分局部变量和实例变量的时候,“this”不能省略。

2.static

2.1.带有static的方法,采用类名的方式访问。也可采用引用的方式。不会报错,不过没有实际意义(实例化方法才能用引用

2.2.静态变量:static String con;//在类加载的时候初始化,内存在方法区开辟,不需要创建对象,内存就开辟了,它存储在方法区内存中。

2.3什么时候成员变量声明为实例变量呢,什么时候声明为静态变量呢?
——所有对象都有这个属性,这个属性的值会随着对象的变化而变化【实例变量】
——这个属性的值是一样的,不会变化,建议定义为静态变量,节省内存的开销。【静态变量】

2.4静态代码块:
(1).语法格式:
static{
java语句;
}
(2).在类加载时执行,并且只执行一次。

3.final
1.意义?
表最终,不可变的

2.作用?
——final修饰的类无法被继承
——final修饰的类无法被覆盖
——final修饰的变量一旦赋值后,不可重新赋值。

——final修饰的实例变量一旦赋值后,不可重新赋值。
final int age;//编译错误
// 第一种解决方案
final int age=1;
// 第二种解决方案
final int a;
public text() {
this.a=20;
}//使用构造方法来
——final修饰的引用
final User user=new User(20);
user=new User(59);//错误,一旦指向某个对象后,不能再指向其他对象,被指向的对象无法被垃圾回收器回收
user.id=40;//但指向的对象还是可以被修改的。
——final修饰的常量
与static联合使用:public static final 类型 常量名=值;//java规范中要求常量名全部大写,每个单词间用下划线连接

五.包

package 包名
命名规范:公司域名+项目名+模块名+功能名

import
用来导入其他类
语法格式:import 类名;
import 包名.*;

六.访问控制权限修饰符:

public 表公开
protected 同包,子类
缺省 同包
private 表示私有的

作用?
可以修饰类,变量,方法。。。

范围:public < protected < 缺省 < private

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐