【Java面向对象】Java语言类的特性

一、类的私有成员和公共成员

1、私有成员

(1)场景

限制外部对类中成员的访问;提高安全性

(2)说明

在类的成员声明的前面加上修饰符private,则无法从该类的外部访问到该类内部的成员,而只能被该类的自身访问和修改,而不能被任何其他类(包括其子类)来获取或引用。因此达到了对数据最高级别保护的目的。

2、公共成员

(1)场景

既然在外部无法访问类中的私有成员,那么Java提供了公共成员使得私有成员可以被外界访问。

(3)说明

在类的成员声明的前面加上修饰符public,则表示该成员可以被所有其他的类访问。
例如,使用公共方法来访问私有成员。

class Cylinder{
	private double radius;
	private int height;
	private double pi = 3.14;
	public void setCylinder(double r,int h){
		if(r>0&&h>0){
			radius = r;
			height = h;
		}else{
			System.out.println("数据有错误!");
		}
	}
	......
}

3、缺省访问控制符

(1)对于类成员(成员变量+成员方法)

如果类成员的前面不加任何访问控制符,则该成员具有缺省的访问控制特性,表示这个成员只能被同一包(类库)中的类所访问和调用

(2)对于类

如果一个类的前面不加任何访问控制符,则这个类具有缺省的访问控制特性,表示这个类只能被同一包(类库)中的类所访问和引用

二、方法的重载

1、重载的定义

重载是指同一个类内有多个同名方法,但它们的参数列表不同,具有不同的功能。

2、重载的条件

  • 同名,但参数个数不同
  • 同名,但参数类型不同
  • 同名,但多参数类型顺序不同,例如int sum(int a,int b){...}int sum(int b,int a){...}构不成重载;而int sum(int a,double b){...}int sum(double b,int a){...}可以构成重载。

以上任一条件满足,即可构成重载。

注意
1、方法的重载根据参数来决定,而不是返回值、修饰符
2、“多参数类型顺序不同”本质上还是参数类型不同,只是有些地方把这一点单独拿出来讲

三、构造方法

1、构造方法的作用和定义

(1)作用

主要作用:在对象被创建时初始化对象的成员

(2)特点

  • 构造方法的名称必须和它所在的类的名称完全相同
  • 构造方法没有返回值,但不能用void修饰,因为构造方法的返回值类型就是该类本身
  • 构造方法在创建对象时自动调用,不需要在程序中调用

2、默认的构造方法

如果类省略掉构造方法,Java编译器会为该类自动生成默认的构造方法,程序在创建对象时会自动调用默认的构造方法。

默认的构造方法没有参数,其方法体中也没有任何代码。

3、构造方法的重载

作用:使用户可以用不同的参数创建对象

4、从一个构造方法调用另一个构造方法

在构造方法中使用this关键字来调用另一个构造方法,并且this必须写在构造方法内的第一行位置

class Cylinder{
	......
	public Cylinder(){
		this(2.5,5,"红色");
		......
	}
	public Cylinder(double r,int h,String str){
		......
	}
}

5、公共构造方法和私有构造方法

构造方法一般都是公有的,这是因为它们在创建对象时,在类的外部被系统自动调用。如果一个构造方法被声明为private,则无法在创建对象时被自动调用,但在方法所在的类中还是可以被调用的。

6、注意点

  • Java语言中,每个类都至少有一个构造器
  • 默认构造器的修饰符与所属类的修饰符一致
  • 一旦显式定义了构造器,则系统不再提供默认构造器
  • 一个类可以创建多个重载的构造器
  • 父类的构造器不可被子类继承

四、可变个数的形参

1、介绍

JavaSE 5.0 中提供了Varargs(variable number of arguments)机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可
变的实参。

2、应用

(1)JDK 5.0以前:采用数组形参来定义方法,传入多个同一类型变量

public static void test(int a ,String[] books);

(2)JDK5.0:采用可变个数形参来定义方法,传入多个同一类型变量

public static void test(int a ,String … books);

3、说明

  • 声明格式:方法名(参数的类型名 …参数名)
  • 可变参数:方法参数部分指定类型的参数个数是可变多个:0个,1个或多个
  • 可变个数形参的方法与同名的方法之间,彼此构成重载
  • 可变参数方法的使用与方法参数部分使用数组是一致的
  • 方法的参数部分有可变形参,需要放在形参声明的最后
  • 在一个方法的形参位置,最多只能声明一个可变个数形参

五、方法的值传递机制

1、参数分类

方法,必须由其所在类或对象调用才有意义。若方法含有参数:

  • 形参:方法声明时的参数
  • 实参:方法调用时实际传给形参的参数值

2、Java的实参值如何传入方法呢?

Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。

  • 形参是基本数据类型:将实参基本数据类型变量的“数据值”传递给形参
  • 形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值