小编有简单介绍过抽象类和抽象方法Java之抽象类和抽象方法的简单介绍。这次小编要介绍的是抽象类还有抽象方法的一些注意事项,具体如下:
1.抽象类不能创建对象,如果创建对象,编译无法通过,且报错。只能创建非抽象子类的对象。(假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义)
2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。(子类的构造方法中,有默认的super(),需要访问父类的构造方法)
3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。(未包含抽象方法的类,目的是不想让调用者创建该类对象,通常用于某些特殊的类结构设计)
4.抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错,除非子类也是抽象类。(假设不重写所有抽象方法,则该类中可能包含抽象方法,那么创建对象后,调用抽象的方法,没有意义)
代码如下:
//创建一个父类抽象方法public abstractclass Fu {public Fu(){System.out.println("抽象父类构造方法执行");}public abstract void eat();}
//创建一个子类public class Zi extends Fu {public Zi(){//super()访问父类System.out.println("子类构造方法执行");}@Override//覆盖重写public void eat() {System.out.println("吃饭");}}
//main方法执行public class DemoMain {public static void main(String[] args) {Zi zi=new Zi();//创建子类对象,抽象类不可以创建对象zi.eat();//抽象父类构造方法执行子类构造方法执行 吃饭}}
在上面的代码中,因为是一个抽象的父类,所以先执行父类的抽象方法(默认的super()访问父类)。在这里小编要提一下,抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。(未包含抽象方法的类,目的是不想让调用者创建该类对象,通常用于某些特殊的类结构设计)
代码如下:
public abstract class MyAbstract {}//一个抽象类中不一定包含抽象方法,只要增加抽象方法所在的类是抽象类就可以了。
关于注意事项的第四点,小编也要提一下,抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错,除非子类也是抽象类。
代码如下:
//较高的抽象父类public abstractclass Animal {public abstract void eat();public abstract void sleep();}
//子类也是一个抽象类public abstract class Dog extends Animal {@Overridepublic void eat(){System.out.println("狗吃骨头");//只重写了一个抽象方法}// public abstract void sleep();}
public class DogGOlden extends Dog {//定义一个DogGolden子类继承Dog类@Overridepublic void sleep() {System.out.println("呼呼呼……");}}
public class Dog2Ha extends Dog{//定义了一个DogsHa子类继承Dog类@Overridepublic void sleep() {System.out.println("嘿嘿嘿……");}}
public class Demo01Main {//main方法执行public static void main(String[] args) {//Animal animal=new Animal() ;错误//Dog dog=new Dog();错误,这也是抽象类Dog2Ha ha=new Dog2Ha();//这是一个普通类,可以直接new对象。ha.eat();ha.sleep();//创建一个golden对象DogGOlden gOlden=new DogGOlden();gOlden.eat();gOlden.sleep();}}
学java全栈 薪资/前景由你掌握
教学 决定深度经验决定高度
课程推陈出新 靶向定制java全栈开发工程师
java学员 就业平均薪资
不同班型 给你多样选择
java&太极共建java名企直聘班
福利 助阵学习
企业级项目精炼 实战为王
求学路上 必有良师相伴
多位一体教学模式 助力优质就业
精心打造多方位一体化 就业服务
定期名企人才输送 学有所成
尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/news/78609/违者必究! 以上就是拉萨IT培训学院 小编为您整理拉萨java培训全日制班哪家好的全部内容。