Java学习概论第八节

一、方法
(一)方法重载
在Java程序中,如果同一个类中包含了两个或两个以上方法的方法名相同,但参数列表不同,则被称为方法重载
三个原则:
在同一个类中;
方法名相同;
参数列表不同,即参数的个数、或对应位置上的类型不同。
(二)构造方法
构造方法(也称为构造函数)是类的一个特殊方法,用于创建对象时初始化对象中的属性值。
语法:
[访问符] 类名 ([参数列表]){
//初始化语句;
}
(1)方法名和类名相同
(2)方法名的前面没有返回值类型的声明
(3)方法中不能使用return语句返回一个值
1、类的构造器(方法)
每一类都有自己的构造方法,或者称为类的构造器。构造方法是用来创建一个类的实例的。
具有特点和作用:
构造方法是用类名作构造方法名;
构造方法具有参数和语句体,但没有返回类型的声明。如果有返回类型的声明,则此方法就再不是构造方法,而成为一个一般的成员方法;
构造方法不是类的成员方法,所以不能用对象调用它。
构造方法的调用是由new运算符实现;
构造方法返回的是这个类的实例的引用;
构造方法中的语句实现对成员变量的初始化;
构造方法的方法过载。一个类可以有多个构造方法;
构造方法之间通过this()形式相互调用。
2、类构造器(方法)
类的构造方法又可以分为两种
默认构造方法
非默认构造方法
默认构造方法是指不带参数的构造方法,该方法可以有语句,也可以没有语句;
非默认构造方法是指带参数的构造方法。
类创建时没有创建构造器,则在编译时编译器自动为该类添加一个默认构造器,即没有创建构造器的类可以直接使用默认构造器。
类创建时如果有任何构造器被创建,则在编译时编译器不再为该类创建默认构造器。即创建了构造方法的类,不再自动有一个默认的构造方法,或者说默认构造器失效,除非也创建一个不带参数的构造器。
(三)this关键字
this是Java的一个关键字,可以出现在实例方法和构造方法中,但不可以出现在类方法中。
1、指代对象本身
this用于指代调用成员方法的当前对象自身。语法格式:
this
2、this访问本类的成员变量和成员方法
this关键字可以出现在类的实例方法中,代表使用该方法的当前对象。
this.成员变量
this.成员方法
3、在构造方法中使用this
this关键字可以出现在类的构造方法中,代表使用该构造方法所创建的对象。注意:只能在构造方法里使用
this([参数列表])
对象的浅拷贝与深拷贝
拷贝:利用已存在的对象,来创建当前对象。
浅拷贝:当对象的属性是基本数据类型时,属于浅拷贝。
深拷贝:当对象的属性是引用数据类型时,属于浅拷贝。
(四)初始化对象
定义完一个带参数的Person()构造方法后,就可以通过此构造方法来创建一个Person对象

public static void main(String args[]){
	//创建Person类的一个对象p
	//Person p=new Person();
	Person p=new Person("赵克玲",35,"青岛");
	//使用对象p,调用display()方法显示对象各成员变量的默认值
	p.display();
}

使用构造方法初始化对象也可以先声明,再创建

  • //声明对象并实例化
  • Person p=new Person(“赵克玲”,35,“青岛”);

等价于:

  • Person p;//声明对象
  • p=new Person(“赵克玲”,35,“青岛”);//实例化对象

(五)可变参数
Java允许定义方法时参数的个数可以变化,这种情况称之为“可变参数”。
语法:
[访问符] [修饰符] <返回类型> 方法名([参数列表],数据类型… 变量){
//方法体
}
示例:
public int add(int a,int b){
//…省略
}

  • 1、可变参数只能处于参数列表的最后
  • 2、一个方法中最多只能包含一个可变参数
  • 3、可变参数的本质就是一个数组,因此在调用一个包含可变参数的方法时,既可以传入多个参数,也可以传入一个数组。

二、封装与访问控制
1、包
Java引入包的机制,提供了类的多层命名空间,解决类的命名冲突、类文件管理等问题。
借助于包可以将自己定义的类与其它类库中的类分开管理。
定义包:
语法:

package mypackage;//定义包

示例:

package com.qst.chapter03;//定义多级包
  • 1、package语句必须作为Java源文件的第一条非注释性语句;
  • 2、一个Java源文件只能指定一个包,即只有一条package语句,不能有多条package语句;
  • 3、定义包之后,Java源文件中可以定义多个类,这些类将全部位于该包下;
  • 4、多个Java源文件可以定义相同的包。

导入包:
Java中一个类可以访问其所在包中的其他所有的类,但是如果需要访问其他包中的类则可以使用import语句导入包。
语法:

import 包名.类名;//导入指定包中指定的类
import 包名.*;//导入指定包中所有的类

示例:

import java.util.*;
import com.qst.chapter03.entity.Student;
  • 导入包之后,可以在代码中直接访问包中的这些类
    示例:
    Data nowDate=new Date();//Date位于java.util包
    Student stu=new Student();
  • 也可以不使用import语句导入相应的包
    java.util.Date nowDate=new java.util.Date();
    com.qst.chapter03.entity.Student stu=new com.qst.chapter03.entity.Student();
  • *指明导入当前包的所有类,但不能使用“ java.* ”或“ java.*.* ”这种语句来导入以java为前缀的所有包的所有类。一个Java源文件只能有一条package语句,但可以有多条import语句,且package语句在import语句之前。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值