一、方法重载
(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