一、方法基本定义格式:
修饰符 返回值类型 方法名(函数类型 形式参数;函数类型 形式参数)
{
执行语句;
return 返回值; //视返回值类型而定
}
注意:
1.java中的修饰符分为类修饰符,字段修饰符,方法修饰符。根据功能的不同,主要分为以下几种。?
*权限访问修饰符(可以用来修饰类、方法和字段)?
public:对任何人都是可用的
protected:继承的类可以访问以及和private一样的权限
default:包访问权限,即在整个包内均可被访问
private:除类型创建者和类型的内部方法之外的任何人都不能访问的元素
*final修饰符?
final的意思是不可变,可以修饰类、字段、方法。修饰类后类不能被扩展(extends),也就是不能被继承。修饰字段后字段的值不能被改变,因此如果有final修饰字段,应该对字段进行手动初始化。修饰方法后该方法不能被改变,也就是重写。
?
*abstract修饰符?
abstract是抽象的意思,用来修饰类和方法,修饰类后,该类为抽象类,不能被实例化,必需进行扩展。修饰方法后,该方法为抽象方法必须被子类重写(override)。?
*static修饰符?
static用来修饰内部类,方法,字段。修饰内部类说明该内部类属于外部类而不属于外部类的某个实例。修饰字段说明该字段属于类而不属于类实例。修饰方法说明该方法属于类而不属于类实例
例://定义加法函数
public static int add(int a, int b)
{
?return a+b;
}
========================================================================================
下面要说方法的重写的重载就需要了解Java中继承的概念
继承:这么理解 从祖宗到现在血缘关系的延续
在继承中会有几个标志性关键字:
extend:继承一个父类 用在类名后
super:用来引用当前对象的父类,实现对父类成员的访问。
this:指向自己的引用。
注意:所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object祖先类
例如:
class Animal
{
public void eat()
{
System.out.println("animal : eat");
}
}
class Dog extends Animal
{
public void eat()
{
System.out.println("dog : eat");
}
void eatTest()
{
this.eat(); // this 调用自己的方法
super.eat(); // super 调用父类方法
}
}
最后说一下继承的特性:
1.子类拥有父类非private的属性,方法。
2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
3.子类可以用自己的方式实现父类的方法。
4.Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类(可深不可广,滥交不提倡)
5.提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。
注意:implement也可以继承 但在我多理解为实现 意思是接口的实现和传递 这个关键字用于接口 下次再写
========================================================================================
二、方法的重写(override)
解释:就是覆盖 需要除你所写的执行代码之外 全部克隆
注意:
1.参数列表,返回类型必须完全与被重写方法的相同
2.父类的成员方法只能被它的子类重写
3.若方法不能被继承那么也不能被重写(声明为final的方法不能被重写)
4.访问权限不能比父类中被重写的方法的访问权限更低,异常的抛出也不能出现新的强制性异常(功高盖主是不提倡的,除非你是主)
5.构造方法不能被重写
例如:
class Animal
{
public void play()
{
System.out.println("动物可以玩");
}
}
class Dog extends Animal
{
public void play()
{
System.out.println("狗可以跑");
}
public void bark()
{
System.out.println("狗可以叫");
}
}
========================================================================================
三、方法的重载(overload)
解析:虽然我和你方法名相同,但是我就是独一无二。构造器的重载是典型。
注意:
1.被重载的方法必须改变参数列表(参数个数或类型不一样)
2.方法能够在同一个类中或者在一个子类中被重载
3.无法以返回值类型作为重载函数的区分标准
例如:
public class Overloading
{
public int test(int a,int b)
{
System.out.println(a + "," + b);
}
public void test(int a)
{
System.out.println(a);
}
}