目录
一.方法methed
1.定义:
修饰符 方法返回类型 方法名(参数列表){
系列语句;
return 返回值;
}
2.public+方法/字段: 公开给外部,外部代码可以直接调用/访问。
3.private+方法/字段: 不允许外部调用/访问,但可以使用内部方法间接调用/访问
#使用private 可以避免破坏封装性,避免逻辑混乱。如,一个人的年龄不能为负数。
4.this变量 指向当前实例
当有局部变量与字段冲突时,须加上this
二.构造方法(构造器)
创建对象时,通过构造方法初始化该对象
- 名称为类名,无返回值。#返回值为该类的实例(隐式,不要写return)
- 任何class都有构造方法,须用new调用。#没有定义构造器时,会生成一个默认的无参构造器,将成员变量初始化为0/null/false
- 类中可以存在多个构造方法,但每个构造方法的参数列表一定不同(重载)。
public class Main {
public static void main(String[] args) {
Constructor con1=new Constructor(6,"666");
con1.Print();//6 666
Constructor con2=new Constructor();
con2.Print();//0 null
}
}
class Constructor{
int x;
String str;
public Constructor(){
//默认
}
public Constructor(int x,String str) {
this.x = x;//变量冲突,用this
this.str = str;
}
public void Print(){
System.out.println(x+"\n"+str);
}
}
三.方法重载
同一个类,方法同名,参数列表一定不同。
#可将一系列功能类似的方法,设置成同名,方便记忆
#参数列表不同:1.形参个数不同。2.形参类型不同
#重载形参个数可变的方法时,优先调用形参固定的方法。如需调用可变方法,可传入数组形式。
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
Overload temp=new Overload();
temp.test(1,1);//固定参数
temp.test(new int[]{1,1});//可变参数
}
}
class Overload{
public void test(int...nums)
{
System.out.println("可变参数");
}
public void test(int x,int y)
{
System.out.println("固定参数");
}
}
四.方法覆写
在继承关系中,子类中定义了一个与父类方法签名(方法名+参数列表)相同的方法。
- 子类方法返回值应比父类更小或相等
- 子类方法声明抛出的异常类应比父类更小或相等(挖个坑)
- @Override 检测覆写
#覆写发生在子类与父类之间
#子类可以重载父类的方法
public class Main {
public static void main(String[] args) {
Parent p=new Parent();
p.method(666);//父类方法
Child c=new Child();
c.method(888);//override
c.method("000");//overload
}
}
class Parent{
public void method(int n){
System.out.println(n+"父类方法");
}
}
class Child extends Parent{
//覆写
@Override
public void method(int x){
System.out.println(x+"\n"+"override");
}
//重载
public void method(String str){
System.out.println(str+"\n"+"overload");
}
}