Java之路---Day10(抽象)

2019-10-24-23:21:17

目录

  1.抽象的方法

  2.抽象类

  3.抽象类和抽象方法的使用

  4.抽象类的注意事项

  5.案例代码


1.抽象的方法

  What:如果父类当中的方法不确定如何进行{}方法体实现,那么这就是一个抽象方法。

  抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束。
  抽象类:抽象方法所在的类,必须是抽象类才行。在class之前写上abstract即可。

2.抽象类

  抽象类除了包含抽象方法外,还可以包含具体的变量和具体的方法。类即使不包含抽象方法,也可以被声明为抽象类,防止被实例化

3.抽象类和抽象方法的使用

  1.不能直接创建new抽象类对象。
  2.必须用一个子类来继承抽象父类。
  3.子类必须覆盖重写抽象父类当中所有的抽象方法。
    覆盖重写(实现) :子类去掉抽象方法的abstract关键字,然后补上方法体大括号。
  4.创建子类对象进行使用

4.抽象类的注意事项

  1.抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。

  2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。

  3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

  4.抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。

  5.抽象类不能被实例化,抽象方法必须在子类中被实现

5.案例代码

 1 package demopra;
 2 //定义一个抽象类
 3 abstract class Employees {
 4     //定义一个变量
 5     private String name;
 6     //空参构造方法
 7     public Employees() {
 8     }
 9     //全参构造方法
10     public Employees(String name) {
11         this.name = name;
12     }
13     //定义一个抽象方法
14     public abstract void work();
15 
16 //    @Override
17 //    public String toString() {
18 //        return "Employees{" +
19 //                "name='" + name + '\'' +
20 //                '}';
21 //    }
22     //Getter和Setter
23     public void setName(String name) {
24         this.name = name;
25     }
26 
27     public String getName() {
28         return name;
29     }
30 }
1 package demopra;
2 //定义一个抽象类的子类
3 public class Teacher extends Employees{
4     //必须实现的方法,重写父类中的方法
5     @Override
6     public void work() {
7         System.out.println("我叫"+this.getName()+",是你们这学期的班主任");
8     }
9 }
1 package demopra;
2 //定义一个抽象类的子类
3 public class Driver extends Employees{
4     //必须实现的方法,重写父类中的方法
5     @Override
6     public void work() {
7         System.out.println("我叫"+this.getName()+",是一名出租车司机");
8     }
9 }
 1 package demopra;
 2 
 3 public class AbstractTest {
 4     public static void main(String[] args) {
 5         //创建一个Teacher对象
 6         Teacher teacher = new Teacher();
 7         //为Teacher对象添加一个名字
 8         teacher.setName("张三");
 9         //执行重写的方法
10         teacher.work();
11 
12         //创建一个Driver对象
13         Driver driver = new Driver();
14         //为Driver对象添加一个名字
15         driver.setName("李四");
16         //执行重写的方法
17         driver.work();
18     }
19 }

运行结果

  我叫张三,是你们这学期的班主任

  我叫李四,是一名出租车司机

 

你可能感兴趣的:(Java之路---Day10(抽象))