JAVA知识点6(封装,无static的调用,构造方法,对象和引用及参数的传递、实例,关键字,包)
第六章
一.封装
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
- Java中方法调用参数传递的方式是传值,尽管传的是引用的值而不是对象的值。(Does Java pass by reference or pass by value?)
- Java第7次作业:造人类(用private封装,用static关键字自己造重载输出方法)什么是面向对象程序设计?什么是类和对象?什么是无参有参构造方法 ?什么是封装?
- 黑马程序员—Java面向对象(类和对象、封装、构造方法、this关键字、static关键字)
- 当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的.
- 【java】值传递和引用传递---对象作为方法的参数传入属于哪种传递
- 6.1面向对象(介绍,类与对象,封装,this关键字,构造方法,static关键字)
- 7 面向对象(成员变量和局部变量的区别,类作为形式参数的问题,匿名对象,封装,private关键字,this关键字,构造方法,类的初始化过程,static关键字)
- 黑马程序员---java基础---面向对象中的构造方法及static关键字,变量的问题
- java基础七(成员变量 局部变量 匿名对象 封装 设计原则 private this 构造方法 static)
- JAVA基础初探(三)面向对象思想、类与对象、成员变量与局部变量、构造方法、static关键字详解
- 匿名对象、封装的概述;关键字(private,this,static)的概述和应用;成员变量和静态变量的区别;如何使用JDK提供的帮助文档;Math类的随机数使用功能;构造方法的概述和格式
- java 多态对象 封装方法 再调用 实例:学校有不同班的学生
- Java 把对象作为参数传到一个方法里,这个是值传递还是引用传递, 为什么结果这么怪?
- 重踏学习Java路上_Day07(成员与局部变量,形参,匿名对象,封装,private,this,构造与成员方法,static)
- 成员变量和局部变量的区别、方法的形参为类的情况及匿名对象、封装(private关键字)、this关键字、构造方法、static关键字
- JAVA基础-面向对象-(第十二课)构造方法,static关键字,帮助文档,Math类的随机数
- 在Java中方法参数的传递,对象是传递引用
- java学习笔记6:构造方法、对象的创建、继承、重写、static、final关键字
- 当类中的方法全部都是 static 关键字修饰时 ,它的构造方法最好作为 private 私有化,理由是方法全是 static, 不知道的人会去new对象去调用,需要调用构造方法。 但 static的方法直接用类名调用就行!
- java第五节-类,对象,构造方法,静态-static,封装