Study16 面向对象三大特性
面向对象三大特性
封装:
该露的露,该藏的藏
- 程序设计要求**“高内聚,低耦合”**。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用
封装(数据的隐藏)
- 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏
属性私有,get/set
package com.oop.demo04;/*** 封装:一般来说封装大多数都是类中的属性,而很少封装方法* 意义:* 1.提高程序的安全性,保护数据* 2.隐藏代码的实现细节* 3.统一接口* 4.增加了系统的可维护性** 类 私有:private (关键字)*/ public class Student {//属性私有private String name;private int age;private int id;private char sex;//提供一些可以操作这些属性的方法// public 的get/set方法// get:获得这个数据public String getName() {return name;}public int getAge() {return age;}public int getId() {return id;}public char getSex() {return sex;}// set:给数据设置值public void setName(String name) {this.name = name;}public void setAge(int age) {if(age<120 || age>0){this.age = age;}else{System.out.println("请不要用你的年龄开玩笑");}}public void setId(int id) {this.id = id;}public void setSex(char sex) {this.sex = sex;}}
继承
继承的本质是对某以批类的抽象,从而实现现实世界更好的建模
extends的意思是扩展。子类是父类的扩展
Java中类只有单继承,没有多继承。
继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等
继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示
子类和父类之间,从意义上讲具有“is a”的关系
package com.oop.demo05;//继承 //Person 人 :父类 //在Java中,所有的类都直接或间接默认继承Object类public class Person {private int money = 10_0000_0000;public void say(){System.out.println("我爱你");}public int getMoney() {return money;}public void setMoney(int money) {this.money = money;} }/* package com.oop;import com.oop.demo03.Pet;import com.oop.demo05.Student;import com.oop.demo05.Teacher;public class Application {public static void main(String[] args) {Student student = new Student();Teacher teacher = new Teacher();student.say();System.out.println(teacher.getMoney());} }*/
package com.oop.demo05;//Student is 人 :子类 public class Student extends Person{}
package com.oop.demo05;//Teacher is 人: 子类 public class Teacher extends Person{}
package com.oop; /*** 测试类*/import com.oop.demo03.Pet; import com.oop.demo05.Student; import com.oop.demo05.Teacher;public class Application {public static void main(String[] args) {Student student = new Student();Teacher teacher = new Teacher();student.say();System.out.println(teacher.getMoney());} }
object类
- 在Java中,所有的类都直接或间接的继承Object类
super
在父类中私有的东西无法被继承(private关键字)
package com.oop.demo05;//Person 人 :父类public class Person {public Person(){System.out.println("Person无参执行了")}protected String name = "王某某";public void print(){System.out.println("Person");} }
package com.oop.demo05;//Student is 人 :子类 public class Student extends Person{public Stydent(){//隐藏代码super();//在调用父类构造器的时候,super();一定在子类构造器的第一行System.out.println("Student无参执行了");}private String name = "李某某";public void test(String name){System.out.println(name);//王大海System.out.println(this.name);//李某某System.out.println(super.name);//王某某}public void print(){System.out.println("Student");}public void test1(){print();//Studentthis.print();//Studentsuper.print();//Person} }
package com.oop;import com.oop.demo05.Student;/*** 测试类*/public class Application {public static void main(String[] args) {Student student = new Student();student.test("王大海");student.test1();} }
运行结果: Person无参执行了 Student无参执行了 王大海 李某某 王某某 Student Student Person
super注意点:1. super调用父类的构造方法,必须在构造方法的第一个2. super必须只能出现在子类的方法或者构造方法中3. super和this不能同时调用构造方法Vs this:代表的对象不同:this: 本身调用这个对象super: 代表父类对象的调用前提:this: 没有继承也可以调用super: 只能在继承条件下调用构造方法:this(): 本类的构造super():父类的构造
方法重写
package com.oop.demo05; package com.oop.demo05;//重写都是方法的重写,和属性无关 public class B { public class B{public void test(){ public static void test() { System.out.println("B>=test()"); System.out.println("B>=test()"); } } } }
package com.oop.demo05; package com.oop.demo05; public class A extends B { public class A extends B {public void test(){ public void test(){System.out.println("A>=test()"); System.out.println("A>=test()");} } } }
package com.oop;import com.oop.demo05.A; import com.oop.demo05.B; import com.oop.demo05.Student;public class Application {public static void main(String[] args) {//静态方法和非静态方法区别很大//静态方法:方法的调用只和左边:定义的数据类型有关A a = new A();a.test();//父类的引用指向了子类B b = new A(); B b = new A();//子类重写了父类的方法b.test()} }
运行结果:A>=test() A>=test()A>=test() B>=test()
重写总结:1.需要有集成方法,子类重写父类的方法2.方法名必须相同3.参数列表必须相同4.修饰符:范围可以扩大,不可以缩小 public>protected>default>private5.抛出的异常:范围可以缩小但不能扩大 重写:子类的方法和父类的要一致,方法体不同!为什么需要重写:1.父类的功能,子类不一定需要或不一定满足2.alt+Insert:override
Study16 面向对象三大特性相关推荐
- 【Python学习笔记】面向对象三大特性
2019独角兽企业重金招聘Python工程师标准>>> ★面向对象:封装.继承和多态是面向对象的三大特点★ 面向对象编程简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元 ...
- python 面向对象(三大特性)
python 面向对象(初级) (思维导图 ↑↑↑↑↑) 概述: 面向过程:根据业务逻辑从上到下垒代码. 函数式:将某功能代码封装至函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...
- [.net 面向对象编程基础] (13) 面向对象三大特性——多态
[.net 面向对象编程基础] (13) 面向对象三大特性--多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...
- 【Python面试】 说说Python面向对象三大特性?
往期面试题: 谈谈对 Python 和其他语言的区别? 说说 Python 解释器种类以及特点? 说说4种常用编码的区别? 废话不多说,开始今天的题目: 问:说说Python面向对象三大特性? 答:P ...
- python面向对象三大特性、类的约束、print带颜色输出及super补充
面向对象三大特性.类的约束.print带颜色输出及super补充 简述: python面向对象的三大特性: 1.继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为 ...
- python面向对象三大特性_Python面向对象之多态原理与用法案例分析
本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...
- Python OOP:面向对象三大特性(封装、继承、多态)、类属性和实例属性、类方法@classmethod、静态方法@staticmethod、函数和类callable、__call__
一.面向对象三大特性 二.多态 定义:多态是⼀种使⽤对象的⽅式,⼦类重写⽗类⽅法,调⽤不同⼦类对象的相同⽗类⽅法,可以产⽣不同的执⾏结果. 一个父类,可以继承给多个子类,每个不同的子类可以创建多个对象 ...
- java 面向对象多态_乐字节Java面向对象三大特性以及Java多态
以上就是本次学习的6大任务.我们依次来看. 1 Object类 Object类是所有Java类的根基类. 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类. cla ...
- python面向对象三大特性6大原则_【Python学习笔记】面向对象三大特性
★面向对象:封装.继承和多态是面向对象的三大特点★ 面向对象编程简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为 ...
最新文章
- hyperledge工具-configtxgen
- 字符串逆序的几种方法
- Spark transformation算子案例
- 前端学习(2425):复习
- java中接口私有反方_接口中的Java 9私有方法
- sign签名算法一致算法-.net、java、golang
- python 根据关键字 切割pdf_用python拆分pdf
- STM32 USB主机通信连接中断过程
- matlab里删除文件恢复,删除的文件如何恢复?360安全卫士找回误删文件
- wmp流代理服务器设置为空,03服务器安装wmp10的方法
- 软件里的alpha版和beta版是什么意思?
- tornado, twister, cyclone,Typhoon,hurricane…到底如何区别?
- charles 本地IP地址
- Python 核心编程(第二版)——网络编程
- 阅读用户思维的思考。
- 移动 webApp 开发入门与进阶
- python listdir 忽略 隐藏文件_忽略特殊文件
- 【掌上齐齐哈尔】市民网上换领驾驶证方便快捷
- ApiPost 前后端协作开发神器 Postman+Swagger+Mock+Websocket的完美替代品
- 亚马逊云服务器是干嘛用的,亚马逊云服务器免费12月套餐及使用步骤