java13面向对象深入3

大纲

这里没有写

面向对象-封装性

理解

封装( encapsulation)怎么去理解,一台电脑利用一个外壳包裹,保护了里面的电器元件,提供了少量的按键与其对接使用。我要看电视,只需要按一下开关和换台就可以了。有必要了解电视机内部的结构吗?有必要碰碰显像管吗?制造厂家为了方便我们使用电视,把复杂的内部细节全部封装起来,只给我们暴露简单的接口,比如:电源开关。具体怎么内部实现的,我们不需要操心。

需要让用户知道的暴露出来,不需要让用户了解的全部隐藏起来。这就是封装,白话: “ 该露的露,该藏的藏”。

概念

​ 我们程序设计要追求“ 高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。也就是说,用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。

作用

a)、实现了专业的分工。将能实现某一特定功能的代码封装成一个独立的实体后,各程序员可以在需要的时候调用,从而实现了专业的分工,即工作中的分模块、分功能开发。
b)、隐藏信息,实现细节。通过控制访问权限可以将可以将不想让客户端程序员看到的信息隐藏起来,如某客户的银行的密码需要保密,只能对该客户开发权限。

javabean

规则

在编写 javabean 中的有一些常用的规则如:
1)、属性尽可能私有化 private
2)、访问器: setter 与 getter 访问器 >private ,一般 public 居多 setterXxx: 存储> 与 getterXxx: 查看

代码

public class Person {  //姓名 
        private String name;   //年龄 
    private int age;  //性别 
    private boolean sex; 

​   public Person() { 
​    } 

​   //setter与getter 
​    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 boolean isSex() { 
         return sex; 
    } 

    public void setSex(boolean sex) { 
         this.sex = sex; 
    } 

}

经典MVC思想

概述

MVC是一种分层思想,一种设计模式。

M:Model层(模型层 )

处理数据、业务,再把处理后的数据提供给视图层

V:View层(视图层)

为用户展示数据,是数据最直观的体现。

C:Controller层(业务逻辑层)

接收界面层的数据,对接受到的数据进行封装和类型转换。
调用模型层的服务进行业务逻辑的处理。
调用合适的视图去渲染数据。

优点

  • 减少代码量,提升性能(效率);
  • 提高代码的扩展性(需求改动,无需改动太多的代码)
  • 遵循高内聚、低耦合的原则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pZvJ4SlB-1609312950192)(/1581945749553.png)]

权限修饰符

public: 一览无遗;

protected:子承父业 (儿子自己使用);

default :家庭和睦;

private :占为已有

面向对象-多态性

女朋友把我带到家,丈母娘一看,疯了!原来是像“曾志伟”!

概述

多态 polymorphism,主要是用来实现动态联编的,换句话说,就是程序的最终状态只有 在执行过程中才被决定而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活性和扩展性。

java中如何实现多态?使用多态的好处?

引用变量的两种类型: • 编译时类型(模糊一点,一般是一个父类)

​ • 由声明时的类型决定。

​ • 运行时类型(运行时,具体是哪个子类就是哪个子类)

​ • 由实际对应的对象类型决定。

多态的存在要有3个必要条件:要有继承,要有方法重写,父类引用指向子类对象

代码

这里没有写

引用数据类型的类型转换

• 子类转换为父类:自动转换

​ 上转型对象不能操作子类新增的成员变量和方法。

​ 上转型对象可以操作子类继承或重写的成员变量和方法

​ 如果子类重写了父类的某个方法,上转型对象调用该方法时,是调用的重写方法。

• 父类转换为子类:强制转换

(绝不是做手术,而是父类的真面目就是一个子类,否则会出现类型转换错误

抽象类

概述

使用了关键词 abstract 声明的类叫作”抽象类”。

抽象类是对抽象的世界建模,是作为父类使用的。比如: 请求出一个图形的面积? 这是你的思考究竟是什么图形?这个图形太抽象了?是三角形还是原型?图形怎么求面积?这个时候就可以把图形定义为抽象类。

几个要点

  • 抽象方法和抽象类均必须用abstract来修饰。
  • 抽象方法没有方法体,只需要声明不需实现。
  • 有抽象方法的类只能定义能抽象类 。
  • 相反抽象类里面的方法不一定全是抽象方法,也可能没有抽象方法。
  • 抽象类可以包含属性、方法、构造方法。
  • 抽象类不能实例化,及不能用new来实例化抽象类,只能用来被子类调用。
  • 抽象类只能用来继承。
  • 抽象方法必须被子类实现。抽象类的子类必须覆盖所有的抽象方法才能被实例化,否则还是抽 象类。

代码

这里没有写

接口

概述

​ 接口(interface ),比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专 业地实现了:规范和具体实现的分离

如何定义

• 格式:

​ • [访问修饰符] interface 接口名 [extends 父接口1,父接口2…] {

​ • 常量定义 //总是public static final

​ • 方法定义 //总是:public abstract •

​ }

如何实现

  • 子类通过implements来实现接口中的规范
  • 接口不能创建实例,但是可用于声明引用变量类型。
  • 一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。
  • Java的类只支持单继承,接口支持多继承

空接口

只是给 JVM 的一种标识而已,就是 JVM 的通行证。
1)、java.lang.Cloneable :不是所有的对象都可以被克隆 否则CloneNotSupportedException
2)、java.io.Serializable

实际开发中,一个业务逻辑处理类永远不要去继承一个实现好的类,要么继承抽象类,要么实现接口,优先使用接口,避免单继承的局限 :abstract class表示的是"is a"关系,interface表示的是"like a"关系

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容