Java复习概要——面向对象编程的四大特征

小灰灰 2022-03-06 10:54 316阅读 0赞

一、抽象

1、定义:我们在定义一个类的时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型,这种研究问题的方法称为抽象。

二、封装

1、定义:封装就是把抽象出来的数据和对象的操作封装在一起,数据被保护在内部,程序的其他部分只有通过授权(成员方法),才能对数据进行操作。

2、访问控制修饰符

java提供四种访问控制修饰符号控制方法和对变量的访问权限:

(1)公开级:用public进行修饰,对外公开

(2)受保护级别:用protected进行修饰,对子类和同一个包中的类公开

(3)默认级:没有修饰符号,向同一个包的类公开

(4)私有级别:用private修饰,只有类本身可以访问,不对外公开















































4种访问级别的访问范围

访问级别

访问控制修饰符

同类

同包

子类

不同包

公  开

Public

受保护

Protected

默  认

没有修饰符

私  有

private

三、继承

1、继承可以解决代码复用,当多个类存在相同的属性和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends继承。

2、子类通过super来继承父类的构造函数和成员方法。

四、多态

1、所谓多态,就是指引用在不同情况下的多种状态,实现多条的两种方式时继承和接口

2、演示

  1. package face_to_object;
  2. /**
  3. * 多重多态
  4. * @author 凡心所向,素履以往,生如逆旅,一苇一航
  5. *
  6. */
  7. public class javabase_duotai {
  8. public static void main(String[] agrs) {
  9. //非多态演示
  10. System.out.println("非多态演示:");
  11. Mao cat = new Mao();
  12. cat.cry();
  13. Gou gou = new Gou();
  14. gou.cry();
  15. System.out.println();
  16. //多态演示
  17. System.out.println("多态演示");
  18. Dongwu an = new Mao();
  19. an.cry();
  20. System.out.println();
  21. //多重多态演示
  22. Master master = new Master();
  23. master.feed(new Gou(), new Bone());
  24. master.feed(new Mao(),new Fish() );
  25. }
  26. }
  27. //动物类
  28. class Dongwu{
  29. String name;
  30. int age;
  31. public String getName() {
  32. return name;
  33. }
  34. public void setName(String name) {
  35. this.name = name;
  36. }
  37. public int getAge() {
  38. return age;
  39. }
  40. public void setAge(int age) {
  41. this.age = age;
  42. }
  43. public void cry() { //方法覆盖
  44. System.out.println("我不知道怎么叫");
  45. }
  46. public void eat() { //方法覆盖
  47. System.out.println("我不知道吃什么");
  48. }
  49. }
  50. //食物类
  51. class Food{
  52. String name;
  53. public void showName() {
  54. System.out.println("我是食物");
  55. }
  56. }
  57. //主人类
  58. class Master{
  59. public void feed(Dongwu an,Food f) {
  60. an.eat();
  61. f.showName();
  62. }
  63. }
  64. //猫类
  65. class Mao extends Dongwu{
  66. public void cry() {
  67. System.out.println("喵喵叫");
  68. }
  69. public void eat() {
  70. System.out.println("猫吃鱼");
  71. }
  72. }
  73. //狗类
  74. class Gou extends Dongwu{
  75. public void cry() {
  76. System.out.println("汪汪叫");
  77. }
  78. public void eat() {
  79. System.out.println("狗吃骨头");
  80. }
  81. }
  82. //鱼类
  83. class Fish extends Food{
  84. public void showName() {
  85. System.out.println("鱼");;
  86. }
  87. }
  88. //骨头类
  89. class Bone extends Food{
  90. public void showName() {
  91. System.out.println("骨头");
  92. }
  93. }
  94. .............................
  95. 非多态演示:
  96. 喵喵叫
  97. 汪汪叫
  98. 多态演示
  99. 喵喵叫
  100. 狗吃骨头
  101. 骨头
  102. 猫吃鱼

附加

一、重载

1、简单的说,方法重载就是在类的同一种功能的多种实现方式,到底采用哪种方式,取决于调用者给出的参数。

2、注意事项:方法名相同;方法的参数类型、个数、顺序至少有一项不同;方法的修饰符和返回类型可以不同

3、演示

  1. package face_to_object;
  2. public class javabase_chongzai {
  3. public static void main(String[] args) {
  4. Compare com=new Compare();
  5. System.out.println(com.getMx(1, 2));
  6. System.out.println(com.getMax(34.5, 1.23));
  7. System.out.println(com.getMax(34.5, 1));
  8. System.out.println(com.getMax(6, 1.23));
  9. System.out.println(com.getMax(34, 1,23));
  10. }
  11. }
  12. class Compare{
  13. //返回类型不同
  14. public int getMx(int a,int b) {
  15. if(a>b) {
  16. return a;
  17. }
  18. else {
  19. return b;
  20. }
  21. }
  22. public double getMax(double a,double b) {
  23. if(a>b) {
  24. return a;
  25. }
  26. else {
  27. return b;
  28. }
  29. }
  30. //返回顺序不同
  31. public double getMax(int c,double d) {
  32. if(c>d) {
  33. return c;
  34. }
  35. else {
  36. return d;
  37. }
  38. }
  39. public double getMax(double c,int d) {
  40. if(c>d) {
  41. return c;
  42. }
  43. else {
  44. return d;
  45. }
  46. }
  47. //返回个数不同
  48. public int getMax(int i,int j,int k) {
  49. if(i>j) {
  50. if(j>k) {
  51. return i;
  52. }
  53. else {
  54. if(i>k) {
  55. return i;
  56. }
  57. else {
  58. return k;
  59. }
  60. }
  61. }
  62. else {
  63. if(j>k) {
  64. return j;
  65. }
  66. else {
  67. if(i>k) {
  68. return i;
  69. }
  70. else {
  71. return k;
  72. }
  73. }
  74. }
  75. }
  76. }

发表评论

表情:
评论列表 (有 0 条评论,316人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java 面向对象特征

    Java是一种面向对象的编程语言,其中包含三大特征: 1. 封装:封装是指将类的接口和实现分开,并将实现隐藏在类内部。这样,其他类就无法直接访问类的内部实现,只能通过公共的

    相关 面向对象特征

    面向对象的三大特征:封装,继承,多态 封装性在java当中的体现: 1. 方法就是一种封装 2. 关键字private也是一种封装 封装就是将一些细节信息隐藏起来,

    相关 Java面向对象特征

    ![Center][] 1.抽象: 抽象——就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。(就是把现实世界中的某一类东西,提取出来

    相关 Java面向对象特征

    Java面向对象的几个特征分别为:封装,继承,抽象,多态。 1封装:  这里的封装主要是针对类的封装。一个业务逻辑的实现往往需要多个对象和方法去实现,封装旨在对不同对象的方

    相关 面向对象特征

    面向对象有四大特征:分别是   继承      :  子类继承父类的特征和行为。子类可以有父类的方法,属性(非private)。子类也可以对父类进行扩展,也可以重写父类的方法

    相关 面向对象特征

    封装 啥是封装?它是面向对象的三大基本特征之一,通俗的理解就是,把对象的状态信息啥的隐藏在对象的内部,外接是无法直接操作对象的状态信息的,要想操作只能通过类对外开放的方法