JavaSE复习日记:抽象类

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

/** 抽象类

* 抽象:

* 面向对象的三大核心思想;

* 封装: 封装,ppp是封装的一部分

* 继承;

* 多态: 父类的引用指向子类的对象

* 引用: 是指一个引用型变量

* 有哪些变量?

* 成员变量;

* 构造方法的局部变量;

* 普通方法的局部变量;

* 立马声明立马使用的变量;

* 静态变量;

* 什么是抽象类?

* 就是用abstract关键字修饰的类就叫抽象类;

* 什么是抽象方法?

* 没有方法体的方法叫抽象方法,连{}都没有;抽象方法必须在修饰符列表中加上abstract这个关键字修饰;

* 继承于抽象类的类:

* 必须全部实现抽象类中的方法(就是加上方法体大括号),如果没有全部实现,就必须加上abstract修饰,即他也是个抽象类;

* 抽象类和抽象方法的关系:

* 含有抽象方法的类一定是抽象类;

* 抽象类却不一定有抽象方法;

* 抽象类没有抽象方法的目的:

* 为了让这个抽象类不能被实例化;

* 抽象方法的性质:

* 1 抽象方法不能被实例化(还有一种方法也不能让类实例化,那就是构造方法私有化,PRivate)

* 2 虽然抽象方法不能被实例化,但是仍然有构造方法,这个是让子类创建对象用的(构造方法不能被继承,用super())

* 3 抽象类中不一定有抽象方法,但是抽象方法必须写在抽象类中

* 4 抽象类的继承类,必须把所有的抽象方法实现(全部需要加上方法体),否则子类还是个抽象类,需要用abstract修饰,也就是子类也不能直接被实例化

*

* 注意:抽象类是不能使用final修饰的,因为抽象类的目的就是为了继承,而final修饰的类不能被继承

* 抽象方法可以用final修饰吗?

* abstract和final不能同时出现,抽象方法不能用final修饰,因为抽象方法的目的是被覆写,而final修饰的方法不能被覆写;

*

* 还有就是,子类必须实现抽象类的所有的"抽象"方法才行,而不是用abstract修饰的方法呢?

* 关于这个,代码中可以看出来;

**/publicclassjavaSE{publicstaticvoidmain(String[] args){

A a=newC();//这里是多态,用于父类引用指向子类对象a.move();

a.eat();//再写一个//A o = new A();//这里是会报错的,我上面写过,抽象类是无法被实例化的,A是抽象类吧,当然不能被实例化;}

}abstractclassA{//抽象类吧publicvoideat(){//这个不是抽象方法吧,需要一定被覆写(实现)吗?System.out.println("这是一个抽象类");

}publicabstractvoidmove();//注意:抽象方法是没有方法体的;A(){

System.out.println("A的构造方法");

}

}abstractclassB extends A{//B没有覆盖(或者说实现)A里面的move()方法,所以他依旧是一个抽象类,需要加上abstract;B(){

System.out.println("B的构造方法");

}

}classC extends B{//C实现了A里面的所有方法吧,所以不用abstract修饰;C(){

super();

}publicvoidmove(){//A中的move()方法被覆写了System.out.println("C不是抽象类");

}

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航