[Java面向对象]抽象类
画师竹取工坊大佬们好我是Mem0rin现在正在准备自学转码。如果我的文章对你有帮助的话欢迎关注我的主页Mem0rin欢迎互三一起进步文章目录一、抽象类二、继承抽象类三、抽象方法在Java中所有的对象都是类描绘的但是不是所有的类都是用来描绘对象的。在我们之前的代码中Dog类继承Animal类但我们知道Animal是一个抽象的概念而不是具体的对象因此有些时候我们只是需要表达动物之间的共性的时候我们就可以把Animal这个抽象的概念写成抽象类。抽象类除了不能实例化以外其他的成员变量方法函数和构造方法都和普通的类一样。因为不能被实例化因此抽象类只能被继承后才能使用。一、抽象类抽象类用abstract修饰符表示实例如下publicabstractclassAnimal{privateStringname;privateintage;privatedoubleweight;publicAnimal(Stringname,intage,doubleweight){System.out.println(Constructing class Animal);this.namename;this.ageage;this.weightweight;}OverridepublicStringtoString(){returnAnimal{namename\, ageage, weightweight};}publicvoidgetName(){System.out.println(Name is name);}}可以发现抽象类也有3个成员变量1个构造方法2个成员方法跟普通的类一样。但是我们能看到在下面的代码中看到抽象类是无法实例化的publicclassTestDemo{publicstaticvoidmain(String[]args){AnimalanimalnewAnimal(mimi,12,12);//编译不通过}}二、继承抽象类我们可以通过一般的方法继承Animal类publicclassCatextendsAnimal{publicCat(Stringname,intage,doubleweight){super(name,age,weight);System.out.println(Constructing class Cat);}publicvoidmailCheck(){System.out.println(Within mailCheck of Cat class );System.out.println(Mailing check to getName() with weight getWeight());}}我们可以通过实例化继承了抽象类的子类并通过子类的向上转型调用父类的方法。publicclassTestDemo{publicstaticvoidmain(String[]args){CatcatnewCat(mimi,12,12);AnimalanimalnewCat(gugu,2,3);System.out.println(Call MailCheck in class Cat);cat.mailCheck();System.out.println(Call MailCheck in class Animal);animal.mailCheck();}}三、抽象方法abstract修饰符也可以用于定义成员方法当声明成员方法的时候我们并不会进行方法的具体实现而是把具体实现交给子类解决。抽象方法有以下两个规则1.如果一个类包含抽象方法则这个类一定是抽象类2.继承抽象类的子类必须重写抽象类中所有的抽象方法否则声明自身也为抽象类。抽象方法没有定义方法名后面直接接分号没有花括号。publicabstractclassAnimal{publicabstractvoideat();}下一篇真的讲接口了。