扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
目录
成都创新互联公司专业为企业提供永吉网站建设、永吉做网站、永吉网站设计、永吉网站制作等企业网站建设、网页设计与制作、永吉企业网站模板建站服务,10年永吉做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。方法
对方法的一些理解
设计方法的建议
方法的定义
面向对象和面向过程的区别
面向过程
面向对象
类和对象
类的构造器(类的构造函数)
修饰词:this
用于修饰属性
用于修饰方法
this用于修饰构造器
方法的重载
什么是方法的重载
方法重载的例子
第一个例子,重载是依靠不同的参数来区别而不是依靠不同类型的返回值来区别
第二个例子,参数个数不同情况下的重载
第三个例子,参数类型不同情况下的重载
第四个例子,参数位置不同情况下的重载
形参和实参
形参(形式参数)
实参(实际参数)
可变个数的形参(传递的参数个数是可变的)
基本格式
使用说明
举个栗子
权限修饰符(public、protected、default、private)
封装
封装的目的
封装的作用
一个封装例子
[访问修饰符] 方法的返回值类型 方法名([参数类型 参数名]){
...
方法体
...
[return 返回值;]
}
public class class1{
void fun1(){
System.out.println("这是一个方法");
}
}
//class1.java
public class class1{
//以人类为例
//定义一些属性
private String country;//国家
private String area;//地区
private String city;//城市
private String address;//住址
private int age;//年龄
private String sex;//性别
private String name;//姓名
private String phone;//电话
//定义一些方法
//告诉别人自己的国家
public String getCountry() {
return country;
}
//告诉别人自己的地区
public String getArea() {
return area;
}
}
//class2.java
public class class2{
public static void main(String[] args) {
//创建一个对象(实例化一个类)
class1 c1 = new class1();
//输出
System.out.println(c1.getCountry());
}
}
类的构造器(类的构造函数)//class1.java
public class class1{
}
//class2.java
public class class2{
public static void main(String[] args){
class1 c1 = new class1();
//类class1中,什么内容都没有,但是在此处创建class1的对象可以成功地创建,这就是调用了隐式存在的类的构造函数
}
}
//class1.java
public calss class1{
int age;
public class1(int i){
this.age = i;
}
//上面定义了有参构造函数,此处便需要一并显式定义无参构造函数
public class1(){
this.age = 1;
}
}
//this修饰属性时的用法
this.属性名 = 值或者是变量名;
//class1.java
public class class1{
int age;
public void setAge(int num){
age = num;
this.age = num;
//上面两种写法的效果相同,两种写法属性age都可以获得num的值
}
}
//class1.java
public class class1{
int age;
public void setName1(int age){
age = age;
//当发生重名并且不使用this修饰符的情况下,属性的赋值会遵守“就近原则”
//也就是说,此处等式左边的age获得的值,并不是setName1函数中传递进来的参数age的值,而是这一个类中属性age的值,因此执行完这一句后,属性age的值为0(相当于把自己赋值给自己,什么都不会被改变)
}
public void setName2(int age){
this.age = age;
//执行完这一句后,属性age的值为setName2函数中传递进来的参数age的值
}
}
//class1.java
public class class1{
//计算两数的和
public int add(int a,int b){
return a + b;
}
//计算一组数字的和
public int addArr(int[] nums){
int sum = 0;
for(int i:nums){
sum = add(sum,i);//此处无论写不写this,调用的都是类class1下的add()方法,因此在方法调用时,this是可以省略的
}
return sum;
}
}
//class1.java
public class class1 {
int age;
String name;
//该类的无参构造器
public class1() {
//调用了一个该类的有参构造器
this("张三");
age = 10;
}
public class1(String name) {
this.name = name;
}
}
//class1.java
public calss class1{
//有如下两个同名方法,它们的参数相同但是方法的返回值不同
public int add(int a,int b){}
public double add(int a,int b){}
//如果将上面的代码复制到IDE中,则编译器会报错,因为方法的返回值并不作为方法重载的依据
}
第二个例子,参数个数不同情况下的重载//class1.java
public class class1{
//有以下两个函数,这两个函数是重载的,它们的参数个数不同
public int add(int a,int b){}
public int add(int a,int b,int c){}
}
第三个例子,参数类型不同情况下的重载//class1.java
public class class1{
//下面几种方法都是重载的,它们的参数类型不同
public double add(int a,int b){}
public double add(int a,double b){}
public double add(double a,int b){}
public double add(double a,double b){}
}
第四个例子,参数位置不同情况下的重载//class1.java
public class class1{
//参数位置不同情况下的重载
//这种情况需要特别注意,因为不是简单粗暴地交换参数的位置就是重载了
//先来看下面几种是重载的情况
public void show(int a,int b,String c){}
public void show(int a,String c,int b){}
public void show(String c,int a,int b){}
//这几种写法是可以成功重载的,简单地说,它们也是属于参数类型不同的情况
//将上面三个重载函数保留,那么下面这些写法便不是重载,并且编译器会报错
public void show(int b,int a,String c){}
public void show(String c,int b,int a){}
//上面两个函数不能构成重载,简单地说,它们的参数类型和已经存在的同名函数的参数类型相同
//因此严格地说来,只有两种情况构成函数的重载
//1.参数的个数不同
//2.参数的位置不同
//用另一种方法分析,可能更容易看出上面函数不能重载的原因
//从函数的声明来看,上面的函数声明依次是这样的
public void show(int,int,String);
public void show(int,String,int);
public void show(String,int,int);
public void show(int,int,String);
public void show(String,int,int);
//这样便很容易可以发现,有几个函数在声明时的参数类型顺序是重复的,折旧造成这些参数类型顺序重复的函数无法构成重载
}
形参和实参
形参(形式参数)//class1.java
public class class1{
public static void main(String[] args){
show("111");//这边传递的参数便是实参
}
public static void show(String str){//这边的str便是形参
System.out.println(str);
}
}
数据类型...变量名
使用说明//class1.java
public class class1 {
public static void main(String[] args) {
show(1, "12", "34", "56");
}
public static void show(int i, String... str) {
for (String s : str) {
System.out.println(s);
}
}
}
权限修饰符(public、protected、default、private)权限修饰符 | 在类内部的访问权限 | 在同一个包中的访问权限 | 在不同的包中的访问权限 | 在同一个项目中的访问权限 |
private | 可以被访问 | 不可以被访问 | 不可以被访问 | 不可以被访问 |
default | 可以被访问 | 可以被访问 | 不可以被访问 | 不可以被访问 |
protected | 可以被访问 | 可以被访问 | 可以被访问 | 不可以被访问 |
public | 可以被访问 | 可以被访问 | 可以被访问 | 可以被访问 |
封装应该将类中的一些内容隐藏掉,只允许在类内部被直接访问,而在类外部只能通过方法调用的方式被访问
封装的作用//class1.java
public class class1 {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
//class2.java
public class class2 {
public static void main(String[] args) {
class1 c1 = new class1();
c1.setAge(20);
System.out.println(c1.getAge());
//若是通过c1.age直接访问类的成员变量,编译器便会报错,因为成员变量age是private类型,无法直接被外部访问
}
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流