第12章 抽象

第12章 抽象

抽象:抽象方法和抽象类。
抽象方法将所有具体的事务,抽取成为一些共同的方法。
抽象类是包含抽象的一种类。

本章重点:
1、抽象
2、抽象类的定义和使用
3、抽象和接口的区别

所谓抽象,就是一种建立编程思路的思想。

抽象就是将拥有共同方法和属性的对象提取出来,提取后,重新设计一个更加通用、更加大众化的类,这个类称为抽象类。
抽象就是提取所有对象的共性,即取出共性的过程。
例如一个汽车管理系统中,凡能够证明这是一辆车的特征,就属于抽象范围。
抽象类使用关键字“abstract”来修饰的类。
具有一个或多个抽象方法的类,本身就要被定义为抽象类。
所谓抽象方法就是带关键字“abstract”的方法。
一个类中只要有一个抽象方法,那么这个类是就抽象类。
抽象类是可以继承的:
子类没有实现抽象类的全部抽象方法,那么子类也是抽象类。
子类实现抽象类的全部抽象方法,那么子类就不是抽象类。
含有抽象方法的类一定是抽象类,但抽象类不一定含有抽象方法。
抽象类不能被实例化,即不能使用关键字“new”来生成实例对象,但可以声明一个抽象类的变量指向具体子类的对象。

抽象与接口的区别:
1、都不能创建实例对象,因为它们都是抽象的。
2、虽然不能直接通过关键字“new”创建对象实例,但可声明变量,通过变量指向子类或实现类的对象,来创建对象实例。
不同点:
1、Java不支持多重继承,即一个子类只能有一个父类,但一个子类可以实现多个接口。
2、接口内不能有实例字段,只能有静态变量,抽象类可以拥有实例字段。
3、接口内方法自动设置为“public”的,抽象类中的方法必须手动声明访问控制符。

abstract class school{
  String sName;
  String cName;
  String location;
  public void setSName(String sName){
    this.sName = sName;
  }
  public void setCName(String cName){
    this.cName = cName;
  }

  abstract void setlocation(String location);
  abstract String getlocation();

  public String tostring(){
    String info = "学校名称:" + sName + " " + "班级名称:" + cName;
    return info;
  }
}

class stuA extends school{

  void setlocation(String location){
    this.location = location;
  }
  String getlocation(){
    return location;
  }
  public String tostring(){
    String info = super.tostring() + " " + "地区:" + location;
    return info;
  }
}

public class absTest{
  public static void main(String[] args){
    stuA s1 = new stuA();
    s1.setSName("Jamper");
    s1.setCName("Tianjin");
    s1.setlocation("China");
    System.out.println(s1.tostring());
  }
}

原文地址:https://www.cnblogs.com/QQ9888267/p/6115265.html