1. 重载
在java中 , 一个类可同时定义许多同名的方法 。
public class demo {
public String p ;
public int d ;
public void method(){
System.out.println("这是无参普通方法");
}
public void method(String p , int d){
//这是有参普通方法
this.p = p ;
this.d = d; }
}
这些方法的形式参数个数、类型或顺序各不相同。
传回的值可能也各不相同 ,这种面向对象 的特性称为 重载。
2.重写
.重写的前提必须先继承
·重写的方法可以使用@Override注解来修饰。
public abstract class Triangle extends Shape
{ private double a;
private double b;
private double c;
@Override public void draw()
{ System.out.println("三角形:a = "+a + " b = "+b+" c = "+c);
}
·对于父类的方法用private修饰的时候 , 子类不能进行重写。
·父类声明为final方法,不能被子类重写。
·构造方法不能被重写。
3.抽象类
1.逻辑概念上:
接口大多数时候知识一组能力的聚合。
抽象类与普通类的区别是他失去了实例化对象的条件。
抽象类中允许定义一些方法,但不去实现(没有方法体,只声明),被子类去实现。
1.被 abstract 修饰。
public abstract class abs {
public String name ;
public void bark (){
System.out.println("吼叫");
}
}
2.没有方法体{} 部分 ,直接分号结尾。
这些方式是专门留给子类去实现方法 (重写)。
abstract class Shape
{ abstract public void draw(); //draw()方法留着被子类重写
}
3.抽象类中允许出现抽象方法。
4. 类可以被继承(扩展 extends) a 类 继承 自b 类 , 但是只允许单继承。
4.接口(interface)
逻辑概念上:
类总是描述现实中的一类事物
1.完全可以理解成一种特殊抽象类。
2.不会出现在属性,只出现方法(默认抽象方法),并且被public 所修饰
3.从某些方向上讲: 接口是一个极端的抽象类(全部只有抽象方法的抽象类)
public interface Flyable {
void fly(); //默认抽象方法
} //描述具备飞行能力的一个概念
4.接口的实现(implements) 可以多继承
class Bird implements Flyable{}
5. 接口与抽象类的异同
差异:
1)接口只能出现抽象方法
2) 接口与接口之间也允许继承关系 ,允许多继承
3)抽象类中可以有属性、普通方法,接口中只能有抽象方法(默认都是public)
4)类总归还是描述一类事物
相同点:
1) 不能被实例化, 接口类和接口 都可以 当成职责边界使用。
2) 允许出现抽象方法。