枣庄住房和城乡建设厅网站,江西核工业建设有限公司网站,贵阳的网站建设,建设项目验收 网站一、构造函数与默认构造函数
构造函数#xff0c;是一种特殊方法。主要用来在创建对象时初始化对象#xff0c;即为对象成员变量赋初始值#xff0c;总与new运算符一起使用在创建对象的语句中。
/**
* 矩形
*/
class Rectangle {/*** 构造函数*/public Rectangle(int leng…一、构造函数与默认构造函数
构造函数是一种特殊方法。主要用来在创建对象时初始化对象即为对象成员变量赋初始值总与new运算符一起使用在创建对象的语句中。
/**
* 矩形
*/
class Rectangle {/*** 构造函数*/public Rectangle(int length, int width) {this.length length;this.width width;}public static void main (String []args){//使用构造函数创建对象Rectangle rectangle new Rectangle(10,5);}
}
特别的一个类可有多个构造函数可根据其参数个数的不同或参数类型的不同来区分构造函数的重载。
构造函数跟一般的实例方法相似
与其它方法不同点
构造器没有返回类型不会被继承且可以有范围修饰符
构造器的函数名称必须和它所属的类的名称相同。它承担着初始化对象数据成员的任务。
如果在编写一个可实例化的类时没有专门编写构造函数多数编程语言会自动生成缺省构造器默认构造函数。
如果在编写一个可实例化的类时没有专门编写构造函数默认情况下一个Java类中会自动生成一个默认无参构造函数。默认构造函数一般会把成员变量的值初始化为默认值如int - 0Integer - null。
但如果手动在某个类中定义了一个有参数构造函数那么这个默认的无参构造函数就不会自动添加了。要手动创建
/**
* 矩形
*/
class Rectangle {/*** 构造函数*/public Rectangle(int length, int width) {this.length length;this.width width;}/*** 无参构造函数*/public Rectangle() {}
} 二、类变量、成员变量和局部变量
Java中三种变量类变量、成员变量和局部变量。分别存放在JVM的方法区、堆内存和栈内存。 public class Variables {/*** 类变量*/private static int a;/*** 成员变量*/private int b;/*** 局部变量* param c*/public void test(int c){int d;}}a作为类变量存放在JVM的方法区b作为成员变量和对象一起存储在堆内存中不考虑栈上分配的情况c和d作为方法的局部变量保存在栈内存。
介绍这三种变量类型是因为很多人因为不知道这三种类型的区别所以不知道他们分别存放在哪里这导致不知道那些变量需要考虑并发问题。
关于并发问题这里简单说明
因为只有共享变量才会遇到并发问题所以变量a和b是共享变量变量c和d是非共享变量。所以如果遇到多线程场景对于变量a和b的操作需要考虑线程安全而对于线程c和d的操作不需要考虑线程安全。 三、成员变量和方法作用域
通过封装手段将成员变量、方法等包装在一个类中那么被封装在类中的这些成员变量和方法能不能被外部访问呢能被谁访问呢
这种能不能被访问、能被谁访问的特性Java是通过访问控制修饰符来实现。
Java中可以用访问控制符来保护对类、变量、方法和构造方法的访问Java 支持 4 种不同的访问权限。
对于成员变量和方法的作用域publicprotectedprivate及不写间的区别
public:表明该成员变量或方法对所有类或对象都是可见的,所有类或对象都可直接访问。private:表明该成员变量或方法是私有的只有当前类对其具有访问权限,除此之外其他类或对象都没有访问权限子类也没有访问权限。protected:表明成员变量或方法对类自身与同在一个包中的其他类可见其他包下的类不可访问除非是其的子类。default:表明该成员变量或方法只有自己和其位于同一个包的内可见其他包内的类不能访问即便是它的子类。