java 基础(重写&重载)(抽象类&接口)

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.没有方法体{} 部分 ,直接分号结尾。

这些方式是专门留给子类去实现方法 (重写)。

抽象方法不能 final static 修饰,因为抽象方法要被子类重写。
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) 允许出现抽象方法。

你可能感兴趣的:(java,开发语言,后端)