java抽象类

抽象类:

场景:

多个类继承一个类,当我们需要调用一个方法,由于方法主体的不一样,具有对象特征。这时候基类创建抽象方法占地,子类实现具体的抽象方法。

如果一个类中有抽象方法,那这个类也是抽象类,需要abstract来修饰。

抽象类不可以实例化,需要通过他的子类来调用基类的抽象方法和普通方法以及数据。

如果子类没有实现所有的抽象方法,那该子类也是抽象类。

通过实例化子类,通过父类多态调用各个子类的相应的抽象方法,达到多态的目的。

 1 package com.company;
 2 
 3 public class init_java {
 4     public static  void  main(String[] args){
 5         Person[] per_l=new  Person[2];
 6         per_l[0]=new Employee("tom","evil");
 7         per_l[1]=new Student("tom","tom");
 8         for(Person p:per_l){
 9             System.out.println(p.kouHao());
10         }
11 //    System.out.println(a.kouHao());
12 //    System.out.println(b.kouHao());
13 
14     }
15 
16 
17 }
18 
19 abstract class Person{
20     private String name;
21     public  Person(String aname){
22         this.name=aname;
23     }
24     public String getName(){
25         return this.name;
26     }
27     public abstract  String kouHao();
28 }
29 
30 class Employee extends Person{
31     private String alaname;
32     public Employee(String name1,String name2){
33         super(name1);
34         this.alaname=name2;
35     }
36     public String kouHao(){
37         return "Employee "+this.alaname+"  is great good!";
38     };
39     public String getAlaname(){
40         return this.alaname;
41     }
42 
43 }
44 class Student extends Person{
45     private  String name;
46     public Student(String name1,String name2){
47         super(name1);
48         this.name=name2;
49     }
50     public   String kouHao(){
51         return "Student "+this.name+" is beautiful!";
52     }
53 }

输出结果:

通过初抽象对象的定义,子类实现抽象方法,在调用的时候通过子类来初始化父类,通过父类变量来多态调用子类的相同的方法(kouHao).

原文地址:https://www.cnblogs.com/evilliu/p/7676726.html