继承、抽象类

一、继承:

1、定义形式:访问修饰符+子类名称+extends+父类名称{

    };

  如:public class Daughter extends Mother {
        }(一个Daughter的子类继承Mother的父类);

2、super:父类的引用。注意:父子类里子类的构造方法第一行代码默认就是super();

    如:public Daughter(){
            super();
        }

  子类调用父类的方法直接在方法体第一行用super调用即可;

3、重写:父子类里面,子类重写父类的方法(不包含构造方法);

  引用重写是因为父子类里面父类的一些方法不适合子类,所以需要在子类里重写;

  注意事项:

       a、重写覆盖时,子类方法的修饰符权限一定要大于或等于父类方法的修饰符权限;

  b、静态(static)修饰的只能覆盖静态的;

  c、覆盖的应用:当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以复写父类中的方法,这样既沿袭父类的功能,又定义了子类特有的内容;

  d、子类里调用父类的方法——super.方法():

    public void play(){
              super.play();//调用父类的方法
              System.out.println("每天打半小时篮球");
        }

    注意:super和this的作用域在类里面,不能写到main方法里面;static修饰的方法不能用super和this关键字!

4、重载:方法名称一样,参数不同,对返回类型和访问修饰符没有要求;

  如:public Mother(){
    }
    private Mother(String name){
    };

5、final关键字:

 a、修饰变量表示数据不可被更改,必须有初始值;

 b、final修饰的类,不可以被继承(包括String类);

 c、final修饰的方法,方法不可被重写;  

 

二、抽象类:

   1、格式:访问修饰符+abstract+class+类名称{ }

  如:public abstract class Mother {
    }

  2、抽象方法:

    格式为在方法返回类型前加“abstract”并去掉方法体“{ }”;

三、抽象类和接口的一些区别;

  1、抽象类只能单一继承,而接口有多个实现;

  2、抽象类里面可以有私有普通方法,而接口都是public abstract;

  3、抽象类的成员变量可以是私有(private)的,但是接口都是public staitc final;

  4、抽象类里面可以有构造方法,但是接口是没有构造方法的;

  5、在jdk1.7版本下,接口中不能包含静态的方法和静态块,但是抽象类可以包含静态方法和静态块;

  6、接口是抽象类的变体,接口中所有的方法都是抽象的,而抽象类是声明方法的存在而不去实现它的类;

四、多态:父类的引用指向子类的对象;

  多态最大的特点和优势就是解除了类与类之间的耦合性;

 

posted @ 2017-09-20 16:46  wanghusuoyi  阅读(247)  评论(0编辑  收藏  举报