首页 > 其他 > 详细

抽象类

时间:2019-11-27 09:52:19      阅读:64      评论:0      收藏:0      [点我收藏+]

抽象类的产生

编写一个类时,会给该类定义一些方法,这些方法是用来描述功能和具体实现的方式,这些方法都有方法体

例如:一个图形类应该有周长的方法,但是不同的图形求周长方法不一样。分析事物,发现共性,就出现了向上抽取。

方法的声名相同,但是方法功能主体不同,这样就可以向上抽取,但只是抽取方法声名,但不抽取方法主体,称这个方法就是抽象方法

抽象函数类必须被abstract关键字修饰,被abstract关键字修饰的类就是抽象类

抽象方法的定义  

抽象方法定义格式:

public abstract 返回值类型 方法名(参数);

抽象类定义的格式:

abstract class 类名{

 }

代码

技术分享图片
 1 /**
 2  * 定义抽象类,使用abstract关键字
 3  * 定义一个抽象方法,使用abstract关键字,但是方法不能有实现
 4  * 子类继承抽象类的时候,必须实现抽象方法
 5  * 注意:抽象类,不能new()
 6  */
 7 public abstract class Person {
 8     private String type;
 9     public Person(String type){
10         this.type=type;
11     }
12 
13     public String getType() {
14         return type;
15     }
16 
17     /**
18      * 下面这两个方法任何人都一样就没有必要做抽象
19      */
20     public void run(){
21         System.out.println("pao");
22     }
23     public void jump(){
24         System.out.println("tiao");
25     }
26 
27     /**
28      * 讲话,不同的人种有不同的讲话方式,本身就是一个抽象的行为
29      * 不能有方法体有什么用呢???
30      */
31     protected  abstract void talk();
32 }
View Code
技术分享图片
1 public class English extends Person{
2     public  English(){
3         super("englishman");
4     }
5     @Override
6     protected void talk() {
7         System.out.println("type"+" "+this.getType()+",speak english");
8     }
9 }
View Code
技术分享图片
1 public class China extends Person{
2     public  China(){
3         super("chinese");
4     }
5     @Override
6     protected void talk() {
7         System.out.println("type"+" "+this.getType()+"speak chinese");
8     }
9 }
View Code
技术分享图片
 1 public class App {
 2     public static void main(String[] args) {
 3         Person china=new China();
 4         Person english=new English();
 5         speak(china);
 6         speak(english);
 7     }
 8     public  static void speak(Person person){
 9         person.talk();
10     }
11 }
View Code

 

抽象类是一个父类?

是的,不断抽取而来

抽象类中是否可以不定义抽象方法

是的,不让该类创建对象,方法可以直接让子类去使用

Private :私有的方法子类是无法继承的,也不存在覆盖

Abstract和private也是不可以一起使用的

 

抽象类

原文:https://www.cnblogs.com/yolanda0225/p/11939527.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!