有点递进关系,继承增加了代码的复用性,多态必须基于继承才可以实现。

一、封装

  使用原因:当我们没有为类进行封装的时候,类中定义的属性可以被外界随意访问,这样容易造成一些合法性的问题。封装可以非常好的解决这个问题。

  步骤:1.先把我们希望外界不要直接访问属性设为private

       2.创建一个set方法来帮助外界为该变量赋值,创建get方法来帮助外界为该变量取值

       3.形成规范,每一次在类中编写不适合被外界直接访问的属性时,一律按照套路把属性设为私有,生成set和get方法

public class Goods {private String name;  //商品名字private int price;  //商品单价private int count;  //商品数量public String getName() {return name;}public void setName(String name) {this.name = name;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}public int getCount() {return count;}public void setCount(int count) {if(count<0){this.count = 0;}else {this.count = count;}}
}

public class TestGoods {public static void main(String args[]){Goods goods = new Goods();goods.setCount(2);System.out.println("商品的数量是:"+goods.getCount());}
}

构造方法:如果一个对象有多个属性,那么,需要创建很多对象,为了解决重复的set值,所以就用到了构造方法;

  1.每一个类都有一个隐形的默认的无参数的构造方法。比如上面的 Goods goods = new Goods();

  2.构造函数的语法很鲜明,访问修饰符 类名(参数列表);   构造方法必须与类名同名

  3.构造方法可以有很多个,实例化的时候需要传入对应的参数。

public class Student {private String name;  private int age;  private char sex;public Student(String name, int age, char sex){this.name = name;this.age = age;this.sex = sex;}public Student(String name, char sex){this.name = name;this.sex = sex;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}
}

public class TestStudent {public static void main(String[] args){Student student1 = new Student("张三",25,'男');Student student2 = new Student("李四",'男');System.out.println("学生的名字是:"+student1.getName()+", 年龄是:"+student1.getAge()+", 性别是:"+student1.getSex());System.out.println("学生的名字是:"+student2.getName()+", 性别是:"+student2.getSex());}
}

二、继承

  意义:父类和子类,子类可以继承父类的某些属性和方法,但是私有的不可以被继承。

重写:当某些方法不适用与子类的时候,子类可以重写他的方法,方法名称参数不变,只是内容会改变。

super:就是基类中的,表示当前类的父类

(在子类中右键,点击generate)                      (然后点击override methods,就会出现重写的方法)            (会让你选择要重写那个方法)

     

public class Father {private String name;private int age;private String hobby;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getHobby() {return hobby;}public void setHobby(String hobby) {this.hobby = hobby;}public void teach(){System.out.println("教育孩子");}
}

public class Son extends Father{@Overridepublic void teach() {super.teach();}
}

public class TestSon {public static void main(String[] args){Son son = new Son();son.teach();son.setAge(6);System.out.println(son.getAge());}
}

三、多态(父类的引用可以指向子类的实例,子类有很多不同的)father可以叫做对象,变量,引用,句柄,右半边的代码创建了一个son的实例

前提:必须要有继承关系

精准概述:父类的引用指向子类的实例

意义:提升灵活性,降低耦合度

特点:只有继承关系才可实现多态

可以将子类的对象实例赋值给其父类的变量

    主要基于方法的重写进行体现

   不可以调用子类中有的父类中没有的方法。

public class Son extends Father{@Overridepublic void teach() {System.out.println("儿子要好好学习");}
}

public class Daughter extends Father{@Overridepublic void teach() {System.out.println("女儿要好好学习");}
}

public class TestSon {public static void main(String[] args){Father father = new Son();father.teach();father = new Daughter();father.teach();}
}

转载于:https://www.cnblogs.com/peiminer/p/10009131.html

java的三大特征:封装,继承和多态相关推荐

  1. python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)

    面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...

  2. Java面向对象三大特性(封装继承多态)解释及案例

    文章目录 包 包基本语法 命名规则 命名规范 导入包实例 访问修饰符 面向对象编程-封装 面向对象编程-继承 super关键词 super和this的比较 方法重写/覆盖 (override) 注意事 ...

  3. Python攻城师的成长————面向对象的三大特征(继承、多态)

    学习目标: 了解继承与多态的概念,重点是要学会运用继承去处理问题 学习内容: 继承 在面对对象程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类,而被继 ...

  4. 三大特征 封装 继承 多态

    ''' 1.面向对象与面向过程 面向过程:核心过程二字,过程即解决问题的步骤,就是先干什么后干什么 基于该思想写程序就好比在这是一条流水线,是一种机械式的思维方式 优点:复杂的过程流程化 缺点:扩展性 ...

  5. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

  6. Python学习笔记④——类、面向对象的三大特征 [封装+继承+多态]

    ✅ Blogger Learns Python is for learning the "Deep Learning". 文章目录 一.面向对象编程的简介 二.类与对象 -- 基础 ...

  7. OC面向对象的三大特征(封装 继承 多态)习题2 复合

    复合:一个类中有一个成员变量是另外一个类的对象. 比如我现在要制作一台电脑,电脑需要CPU,显示器,鼠标和键盘等.这些东西的研发都是很复杂的过程.如果现在有成型的CPU等组件,就可以直接用这些组件攒一 ...

  8. JAVA的三大特征之继承

    继承 继承是指定义一个父类,子类可以继承继承父类中非private的方法与属性.这样做的好处是提高代码重复利用率.继承采用关键字extends实现.同时子类也可以拥有属于自己的属性和方法.格式如下: ...

  9. Java面向对象三大特征---继承

    系列文章目录 Java面向对象三大特征-多态 Java面向对象三大特征-封装 文章目录 系列文章目录 前言 一.概念 二.举例说明 三.语句格式 三.为何要使用继承 四.super与this关键字 五 ...

  10. c++局部对象是什么_面向对象三大特征: 封装

    今日内容 面向对象概述 类和对象的关系 面向对象内存图 private.this关键字和封装 面向对象之构造方法 面向对象三大特征 封装 继承 多态 01. 面向过程和面向对象思想概述 什么是面向过程 ...

最新文章

  1. 百篇大计敬本年之C++坎坷之路 —— Warning:will be initialized after [-Wreorder]
  2. bilibili基于 Flink 的机器学习工作流平台在 b 站的应用
  3. Access数据库查询练习专用数据库 -手机号码归属地Access数据库_MobileDB(10万条记录)...
  4. 2.1_7 Oracle 执行计划之1_优化器(Optimizer - CBORBO)
  5. 新媒体广告摘录 形泰传媒 尹语堂®
  6. ios和linux共享的笔记软件,超好用!5款完全免费、支持全平台的笔记软件
  7. 几个在线的web代理
  8. 厉害了!北大3位硕博生搞出ChatGPT版Excel!动动嘴就能自动处理表格……免费用!...
  9. JLX256160 液晶屏串行 无字库
  10. 入侵特斯拉汽车Model S 信息娱乐系统漏洞
  11. Linux中lvdisplay命令的用法,lvdisplay
  12. 什么是坐标系,不同坐标系之间有什么区别
  13. 由于找不到VCRUNTIME140.dll,无法继续执行代码问题解决
  14. Android 第三方RoundedImageView设置各种圆形、方形头像
  15. 9-5日度小满金融Java研发工程师笔试
  16. 浪潮编程题python石头排序_数分 | 沙滩排石头-浪潮提前批笔试 Java、C++、Python
  17. 比较不错的互联网盈利模式分析
  18. pyspider的使用
  19. BotVS开发基础—2.11 API绘制图表
  20. 在地图上创建热力图的方法

热门文章

  1. java对话框可以设置颜色吗_java文本域颜色设置对话框.doc
  2. opengl 如何加阴影_一步步学OpenGL(23) -《阴影贴图1》
  3. win10亮度怎么调_装好原版win10后,没有这样设置过,你的系统怎么可能好用!...
  4. 【LA4728】Square(求凸包(多边形)直径----旋转卡壳)
  5. android 人脸特征提取方法,qs_face_points_android
  6. matlab画坐标系,Matlab如何绘制十字坐标系??
  7. java异常处借接错书_利用Java异常机制实现模拟借书系统
  8. 如何用计算机制作统计图,统计图制作_ai的环形统计图怎么制作
  9. Anormaly_Detection_with_Keras
  10. 易筋SpringBoot 2.1 | 第廿三篇:SpringBoot之Docker入门