面试题:

  • 面向对象的基本特征:封装、继承、多态

  • 面向对象的特征:封装、继承、多态、抽象

  • 类:一类具有相同特性的事物的抽象描述。

  • 抽象:不明确,不清楚,不确定

  • 反义词:具体

1、什么情况下会用到抽象?

  • 我们要声明(1)圆类(2)矩形类等类型,发现这些子类中有共同的特征,需要提取到公共父类Graphic中,
  • 但是在公共父类中又无法给出具体的方法的实现,那么这样的方法我们声明为抽象方法。
  • 当一个类包含了抽象方法,这个类必须也是抽象的。

2、抽象有两种:

  • (1)抽象方法
  • (2)抽象类

3、抽象方法

  • 语法格式:

    • 【权限修饰符】 abstract 返回值类型 方法名(【形参列表】);
  • 特点:没有方法体

4、抽象类

  • 语法格式:

    • 【权限修饰符】 abstract class 抽象类名{
      }

5、抽象类的特点

  • (1)抽象类是不能直接创建对象
  • (2)一个类包含了抽象方法,这个类必须是抽象类;
    • 但是反过来,一个抽象类中可能没有抽象方法。
  • (3)抽象类中有没有构造器?或者说是否需要构造器?
    • 抽象类一定有构造器,目的是给子类调用的。
  • (4)抽象类的存在的意义就是用来被继承的,
    • 子类继承抽象类时,必须实现(重写)父类的所有抽象方法,否则子类也得是一个抽象类。

抽象类和非抽象类的区别:就是抽象类不能直接创建对象

我们要声明(1)圆类(2)矩形类等类型,发现这些子类中有共同的特征,需要提取到公共父类Graphic中, 但是在公共父类中又无法给出具体的方法的实现,那么这样的方法我们声明为抽象方法。

public class TestAbstract {public static void main(String[] args) {//Graphic g = new Graphic();//抽象类不能直接创建对象//注意,这里创建的不是对象,是对象数组,还没有进行对象初始化Graphic[] g = new Graphic[2];g[0] = new Circle(2);System.out.println(g[0].getArea());g[1] = new Rectangle(3,5);System.out.println(g[1].getArea());}
}
abstract class Graphic{private String name;public Graphic() {super();}public Graphic(String name) {super();this.name = name;}//从子类重抽取出共同的特征,发现无法给出具体的合理实现//因为我们无法实现方法体,那么干脆就省略了方法体{},即不写,使用;结束public abstract double getArea();public abstract double getPrimeter();
}
class Circle extends Graphic{private double radius;public Circle(double radius) {this.radius = radius;}public Circle() {}public double getRadius() {return radius;}public void setRadius(double radius) {this.radius = radius;}public double getArea(){return Math.PI * radius * radius;}public double getPrimeter(){return 2 * Math.PI * radius;}
}
class Rectangle extends Graphic{private double length;private double width;public Rectangle(double length, double width) {this.length = length;this.width = width;}public Rectangle() {}public double getLength() {return length;}public void setLength(double length) {this.length = length;}public double getWidth() {return width;}public void setWidth(double width) {this.width = width;}public double getArea(){return length * width;}public double getPrimeter(){return 2 * (length + width);}
}

面向对象的特征之一:抽象相关推荐

  1. 【转载】面试题:面向对象的特征和基本特征有哪些 之抽象

     面试题: 面向对象的基本特征:封装.继承.多态 面向对象的特征:封装.继承.多态.抽象 类:一类具有相同特性的事物的抽象描述. 抽象:不明确,不清楚,不确定 反义词:具体 1.什么情况下会用到抽象? ...

  2. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  3. Java面向对象(二)面向对象的特征 --- 封装 、 继承、 多态

    面向对象的特征:封装.继承.多态.(抽象) 一.封装 体现形式: 函数 --- 提高代码的复用性. 属性的私有化 --- 将属性设为私有,通过提供对外的访问方法来间接操作对象属性,可以再方法内对属性做 ...

  4. c++面向对象三大特征封装、继承和多态知识总结

    面向对象三大特征:封装,继承,多态: 一.封装:该公开的就公开话,该私有的就隐藏掉,主要是由public,private实现:作用是便于分工和分模块,防止不必要的扩展: 二.继承:就是一种传承,可以把 ...

  5. Java面试面向对象三大特征,Java面试经典基础问答三

    1. 写clone()方法时,通常都有一行代码,是什么? 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对 ...

  6. Java基础之面向对象的特征。

    首先需要知道类和对象是什么? 维基百科定义类为: an extensible program-code-template for creating objects, providing initial ...

  7. Java面试题:面向对象的特征有哪些方面?

    古往今来,自学成才的人有几个,大多数人才都是有良师引导.如果说你觉得自己也能学会,秉持着好记性,能背会所有书,但是你背会了书,却不理解其中的意义,这书也就白读了吗?所以你在前行的时候要有人告诉你书的奥 ...

  8. 开课吧课堂-Java面试题:面向对象的特征有哪些方面?

    古往今来,自学成才的人有几个,大多数人才都是有良师引导.如果说你觉得自己也能学会,秉持着好记性,能背会所有书,但是你背会了书,却不理解其中的意义,这书也就白读了吗?所以你在前行的时候要有人告诉你书的奥 ...

  9. 面向对象程序设计中对抽象的理解

    在面向对象软件开发中抽象是最基本的方法,抽象到底是什么呢?抽象和接口有什么关系呢?在这里谈谈自己的看法. 抽象的过程也是一个裁剪的过程,不同的.非本质性的特征全部裁剪掉了,即就是抽取事物的共同特征就是 ...

最新文章

  1. css设置鼠标指针光标样式
  2. SHELL脚本--简介
  3. 新概念0810:我理解的经济内循环
  4. Java中Map类型数据使用LinkedHashMap保留数据的插入顺序
  5. hdu1589(枚举+并查集)
  6. 【机器视觉】 dev_open_dialog算子
  7. linux的系统移植——交叉编译工具集
  8. python 模拟用户点击浏览器_使用python进行模拟浏览器操作
  9. 强力推荐几种多媒体播放器方案(jQuery、Flash、HTML5)
  10. 广告拦截之easylist和easylistchina订阅地址
  11. 设计模式 笔记 解释器模式 Interpreter
  12. excel2003出现“向程序发送命令时出现错误”解决方法
  13. 【04】Kubernets:资源清单(pod)
  14. 60个Java练手项目案例,看了让你茅塞顿开~
  15. 自己动手搭建家庭局域网(一),服务器搭建和文件共享
  16. vue 获取汉字的全拼、简拼、首拼
  17. 结构化数据与非结构化数据的区别
  18. 中e管家理财小方法让闲钱变成活钱
  19. 系统集成项目管理工程师——挣值管理(PV、EV、AC、SV、CV、SPI、CPI)
  20. 华为--配置本地环回接口地址

热门文章

  1. 蓝牙2.0和4.0 android,蓝牙适配器2.0和4.0区别,蓝牙标准的发展历程
  2. python计算机视觉——立体匹配与NCC算法
  3. linux内核开发(基础)
  4. idea中的jar包在哪里导入?
  5. 计算机毕业设计ssm毕业设计过程管理系统049a8系统+程序+源码+lw+远程部署
  6. 小程序请求后端接口步骤
  7. 求助,电脑关闭游戏后自动弹出dptf
  8. 学习日记day09 ps
  9. C++继承和派生笔记
  10. 51单片机-LED模块-来回流水灯