首页 > 编程语言 >方法重载,可变参数,作用域,构造器,this---JAVA

方法重载,可变参数,作用域,构造器,this---JAVA

时间:2022-11-07 18:44:06浏览次数:42  
标签:JAVA name Person 作用域 --- int println public String

一、方法重载
(1)方法名:必须相同;
(2)参数列表:必须不同(参数类型或个数或顺序,至少有一样不同,参数名无要求)
(3)返回类型:无要求

public class var {
public static void main(String[] args) {
Mycalculator mc=new Mycalculator();
System.out.println(mc.calculate(1,2));
System.out.println(mc.calculate(1.1,2));
System.out.println(mc.calculate(1,2.1));
System.out.println(mc.calculate(1,2,3));
}
}

class Mycalculator{
//下面四个calculate构成重载,形参的名字无所谓,重要的是类型个数和顺序
public int calculate(int n1,int n2){
return n1+n2;
}
public double calculate(int n1,double n2){
return n1+n2;
}
public double calculate(double n1,int n2){
return n1+n2;
}
public int calculate(int n1,int n2,int n3){
return n1+n2+n3;
}
}

 

 

 

 //1

public class var {
public static void main(String[] args) {
Methods mc=new Methods();
mc.m(10);
mc.m(10,20);
mc.m("1");

}
}

class Methods{
//下面四个calculate构成重载
public void m(int n){
System.out.println("平方"+(n*n));
}
public void m(int n1,int n2){
System.out.println("平方"+(n1*n2));
}
public void m(String n1){
System.out.println(n1);
}

}

//2

public class var {
public static void main(String[] args) {
Methods me= new Methods();
System.out.println(me.max_min(2,4));
System.out.println(me.max_min(2.1,4.2));
System.out.println(me.max_min(2.1,4.2,5.1));
}
}

class Methods {
//下面四个calculate构成重载
public int max_min(int n1, int n2) {
return n1>n2?n1:n2;
}
public double max_min(double n1, double n2) {
return n1>n2?n1:n2;
}

public double max_min(double n1, double n2,double n3) {
double max1=n1>n2?n1:n2;
return max1>n3 ? max1:n3;
}
}

二、可变参数
public class var {
public static void main(String[] args) {
HspMethod hsp= new HspMethod();
int hsp_1 = hsp.sum(1,5,100);
System.out.println(hsp_1);
//System.out.println(hsp.sum());

}
}

class HspMethod {
public int sum(int... nums) {
//System.out.println("接收的个数"+nums.length);
int res=0;
for(int i=0;i<nums.length;i++){
res +=nums[i];
}
return res;
}
}

 

 接收的int可以为数组

public class var {
public static void main(String[] args) {
HspMethod hsp= new HspMethod();
int[] arr={1,2,3};
hsp.sum(arr);

//System.out.println(hsp.sum());

}
}

class HspMethod {
public void sum(int... nums) {
System.out.println("接收的个数"+nums.length);

}
}

可变参数可以和普通参数一起放在形参列表,但必须保证可变参数在最后
public void f2(double... nums,String str){

一个形参列表只能出现一个可变参数

//有三个方法,分别实现返回姓名和两门课成绩(总分),返回姓名和三门课成绩(总分),
//返回姓名和五门课成绩(总分)。封装成一个可变参数的方法
public class var {
public static void main(String[] args) {
HspMethod hm = new HspMethod();
System.out.println(hm.showScore("milna",90.1,80.0));
System.out.println(hm.showScore("kily",90.1,80.0,99.9,70.0));
}
}
class HspMethod{
public String showScore(String name,double... scores){
double totalScore =0;
for(int i =0;i<scores.length;i++){
totalScore += scores[i];
}
return name +"有"+ scores.length +"成绩总分为" + totalScore;
}
}

三.作用域

 

 

class Cat{
//全局变量:也就是属性,作用域为整个类 Cat类:cry,eat等方式使用属性
//属性在定义时可以直接赋值
int age=10;
//全局变量(属性可以不赋值),直接使用,因为有默认值
//局部变量不许赋值后才可以使用,因为没有默认值
double weigth;//默认值为0.0

public void cry(){
//1.局部变量一般指在成员方法中定义的变量
//2.n 和name就是局部变量
//3.n和name的作用域在cry方法中
int n =10;
String name="jack";
System.out.println("在cry中使用属性 age="+age);
}
public void eat(){
System.out.println("在eat中使用属性 age="+age);
}
}

 

 注意事项

 

 

 

 

//就近原则
public class var {
public static void main(String[] args) {
Person p = new Person();
p.say();//King
}
}

class Person {
String name = "jack";

public void say() {
String name = "King";
System.out.println("say name" + name);
}
}
////////////////
public class var {
public static void main(String[] args) {
Person p1 = new Person();
// p.say();//King
T t1 = new T();
t1.test();
t1.test2(p1);
}
}

class T {
public void test() {
Person p1 = new Person();
System.out.println(p1.name);
}

public void test2(Person p) {
System.out.println(p.name);
}
}
class Person {
String name = "jack";

public void say() {
String name = "King";
System.out.println("say name" + name);
}
}
四.构造方法/构造器
public class var {
public static void main(String[] args) {
//当我们new一个对象时,直接通过构造器指定名字和年龄
Person p1 = new Person("s",80);
System.out.println(p1.age);
System.out.println(p1.name);
}
}

//在创建人类的对象时,就直接指定这个对象的年龄和姓名
class Person{
String name;
int age;
//构造器
//1.构造器没有返回值,也不能写void
//2.构造器的方法名和类名一致
//3.(String pName,int pAge)构造器形参列表,规则和成员方法一致
public Person(String pName,int pAge){
name=pName;
age = pAge;
}
}

 

 构造器重载:

public class var {
public static void main(String[] args) {
//当我们new一个对象时,直接通过构造器指定名字和年龄
Person p1 = new Person("s",80);//第一个构造器
Person p2 = new Person("s");//第二个构造器

}
}

//在创建人类的对象时,就直接指定这个对象的年龄和姓名
//构造器的重载
class Person{
String name;
int age;
//第一个构造器
public Person(String pName,int pAge){
name=pName;
age = pAge;
}
//第二个构造器
public Person(String pName){
name=pName;
}
}

 

 

class Dog{
          //如果程序员没有定义构造器,系统会自动给类生成一个默认无参构造器
           //默认构造器
         //Dog(){


                // }
  }

 

 /////////////////

public class var {
public static void main(String[] args) {
Person p1 = new Person();//无参构造器
System.out.println("p1的信息"+ p1.name + "p1.age" + p1.age);//null,18
Person p2 = new Person("scott",50);
System.out.println("p2的信息"+ p2.name + "p2.age" + p2.age);//scott,50
}
}

//在创建人类的对象时,就直接指定这个对象的年龄和姓名
//构造器的重载
class Person{
String name;
int age;
//第一个无参构造器:利用构造器设置所有人的age属性初始值为18
public Person(){
age = 18;
}
public Person(String pName,int pAge){
name=pName;
age = pAge;
}

}

 

 


五.this

 

 this.name 就是当前对象的属性name

 

 

this小结:哪个对象 调用,this就代表哪个对象

 

 

public class var {
public static void main(String[] args) {
T t1 = new T();
t1.f2();

}
}

//在创建人类的对象时,就直接指定这个对象的年龄和姓名
//构造器的重载
class T {
//细节:访问成员方法的语法:this.方法名(参数列表);
public void f1() {
System.out.println("f1() 方法");
}

public void f2() {
System.out.println("f2() 方法");
//调用本类的f1
//第一种方式
f1();
//第二种方式
this.f1();
}
}
this只能在构造器中使用(即只能在构造器中访问另外一个构造器)
//判断输入的名字姓名是否相等
public class var {
public static void main(String[] args) {
Person p1 = new Person("mary",20);
Person p2 = new Person("smith",30);
System.out.println(p1.compareTo(p2));
}
}

//在创建人类的对象时,就直接指定这个对象的年龄和姓名
//构造器的重载

class Person {

String name;
int age;

//构造器
public Person(String name, int age) {
this.name = name;
this.age = age;
}

//compareTo比较方法
public boolean compareTo(Person p) {
if (this.name.equals(p.name) && this.age == p.age) {
return true;
} else {
return false;
}
}
}












































标签:JAVA,name,Person,作用域,---,int,println,public,String
From: https://www.cnblogs.com/maxzz/p/16856173.html

相关文章

  • 0001-华为ENSP WLAN配置实验-郑锦程
    0001-华为ENSPWLAN配置实验-郑锦程创建管理vlan和业务vlan​​[AC6605]vlanbatch100101​​​​Info:Thisoperationmaytakeafewseconds.Pleasewaitforamome......
  • 景区景点vr全景拍摄制作怎么收费的?-深圳华锐视点
    VR全景作为当下新兴的一种宣传展示方式,其在商业服务行业运用十分普遍,主要是起到了宣传展示和引流拓客的效果,因此VR全景成为了广告界的新的发展趋势(1)随时随地,在......
  • vee-validate 总结
    一、安装npminstallvee-validate@"<3.0.0"--save二、引用importVuefrom'vue';importVeeValidatefrom'vee-validate';Vue.use(VeeValidate);三、config......
  • repo - contains uncommitted changes
    2022-11-07好用!在使用reposync同步代码时候出现error:.repo/manifests/:containsuncommittedchanges出现这个问题的原因是本地代码发生变化,但未commit。试着......
  • 2022最全Hbuilder打包成苹果IOS-App的详解
      本文相关主要记录一下使用Hbuilder打包成苹果IOS-App的详细步骤。介绍一下个人开发者账号:再说下什么是免费的苹果开发者账号,就是你没交688年费的就是免费账号,如果......
  • 金融ETL工程师-深圳(年40-50万)
    ​职位描述1. 负责数据治理及数仓管理,赋能风控科技商业化、提升产品价值,保障数据的质量和稳定性:2.以下两个职能,满足其一:a.参与外部数据实时链路的研发,包含数据的采集......
  • java 手机号里 4位数字变成 * ,脱敏处理
    效果:代码实现: Stringphone="13100001111";StringphoneResult=phone.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");System.out.println(phoneResult);结果: ps......
  • java 获取IP地址 无法获取到真实的IP地址springboot 获取访问接口的请求的IP地址
    工具类:springboot获取访问接口的请求的IP地址问题:无法获取到真实IP地址  获取出来全是 192.xxx.xxx.xxx开头或者 172.xxx.xxx.xxx 开头 解决方案:nginx代理需......
  • Java 将两个对象list里面的 某个字段值抽取到一个list里
    场景举例:两个List(rooms1和rooms2)里面放的对象都是Room,现在想把两个List里面的room的id都抽取出来,放在一个List里面。 实现代码:List<Integer>idList=Stream.......
  • CMD-SeaJS模块化
    下载sea.js,并引入官网:http://seajs.org/github:https://github.com/seajs/seajs将sea.js导入项目:js/libs/sea.js创建项目结构|-js|-libs|-sea.js|-modules|-mod......