zoukankan      html  css  js  c++  java
  • 第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());
      }
    }

  • 相关阅读:
    c# 启动线程的方式
    c# 打开文件夹获取所有文件
    windows server 2008 R2 SP1 安装SQL Server 2008 R2时提示 "此操作系统不支持此版本的 SQL Server 版本"
    mongodb 备份 指定用户名密码
    c# 线程启动的两种方式与传参
    vs 2015 密钥
    c# 时间格式yyyy-MM-ddTHH:mm:ss
    c# oledb sql 报错 标准表达式中数据类型不匹配
    CentOS下yum安装dnsmasq,并强制替换为最新版
    使用QUOTA(磁盘配额)来限制用户空间
  • 原文地址:https://www.cnblogs.com/QQ9888267/p/6115265.html
Copyright © 2011-2022 走看看