面向对象深入

1.面向对象三大特征

a) 继承 inheritance

子类可以从父类继承属性和方法

子类可以提供自己的属性方法

b) 封装 encapsulation

对外隐藏某些属性和方法

对外公开某些属性和方法

c) 多态 polymorphism

适应变量的多种变化

1.1 封装

a)   为什么需要封装

隐藏对象内部的复杂性,只对外公开简单接口。便于外界调用,提高系统可扩展性、可维护性;

b)   实现封装

使用访问权限符

成员四种访问权限

  1. public 公共的

项目可见

  1. protected 受保护的

类本身访问

包内其他类访问

子类访问

  1. default 默认的(包可见)

类本身访问

包内其他类访问

  1. private 私有的

只被这个类本身访问

类的两种访问权限

  1. public

项目中所有类访问

  1. default

同一个包内的类访问

封装要点

  1. 类的属性的处理

a)     一般使用private,除非需要子类继承

b)    提供get/set访问属性,通常方法为public

c)     只用于本类的辅助方法 private

d)    希望其他类调用的方法public

1.2        继承

定义:类是对对象的抽象,继承是对一批类的抽象

意义:提高代码复用性

public class TestExtend {

public static void main(String[] args) {

Mammal a = new Mammal();

a.eat(); //从父类继承了eat();

a.pure();

}

}

public class Animal{

String name = "小脑斧" ;

int age = 2;

public void eat() {

System.out.println("吃饭");

}

}

public class Mammal extend Animal{

public void pure() {

System.out.println("吃奶");

}

}

其他

  1. Java只有单继承
  2. 所有类的公共父类为Object

1.3      方法的重写

a)   == 方法名、参数相同

b)   <= 返回值类型和异常类型子类小于父类

c)    >= 访问权限子类大于父类

Object类

Object类是所有类的基类,其中含有许多方法

1.示例:重写toString (默认返回包+类+@哈希码)

  1. 2.    对象的比较 == 与equal

a)     ==

a)   比较两基本变量的值是否相同

b)   比较两个引用类型内存是否相同,是否指向同一对象

b)    Equal

a)   两对象内容是否相同

1.4      super关键字

b)   super是直接父类对象的引用

c)    可以通过super来访问父类中被子类覆盖的属性和方法

1.5      多态

多态性是OOP中一个重要特性,用来实现动态联编,就是程序的最终状态只有再执行过程才被决定而非编译期间决定

  1. 如何使用多态

a)     引用类型的两种类型

i.           编译时类型:声明时的类型决定

ii.           运行时类型:由对象实际类型决定

b)    多态存在的三个必要条件

i.           要有继承

ii.           要有方法重写

iii.           父类引用指向子类对象

示例

注意:引用类型的类型转换

1.6        final关键字

  1. final关键字可以来修饰变量、类、方法

a)     修饰变量:相当于定义了一常量,不可更改

b)    修饰方法:在子类中不能覆盖

c)     修饰类:无法被继承

Java学习 · 初识 面向对象深入一的更多相关文章

  1. Java学习 · 初识 面向对象基础一

    面向对象基础 1.1面向过程与面向对象的区别 面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计.但二者并不是对立的,在解决 ...

  2. Java学习 · 初识 面向对象深入二

    面向对象深入 1.            抽象类 a)     声明 i.           抽象方法和抽象类必须用abstract来修饰 ii.           没有方法体,不需要实现 b)  ...

  3. Java学习 · 初识 面向对象基础二

    Package 为什么需要使用package a)   解决类重名的问题 b)   便于管理类 怎么使用package a)   类的第一句非注释性语句 b)   命名:域名倒着写,再加上模块名 注意 ...

  4. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  5. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  6. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  7. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  8. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

  9. java学习之面向对象概念

    思考的两种方式: 举例: 把大象放到冰箱里 一.面向过程 :[打开冰箱->把大象放里面->关上冰箱门]面向过程注重的是过程,也就是(动作[函数]),然后按照动作依次去执行就好了. 代表语言 ...

随机推荐

  1. NHibernate参考文档、下载地址

    没有中文版哦,在线NHibernate参考文档:http://nhforge.org/doc/nh/en/获取地址:http://sourceforge.net/projects/nhibernate ...

  2. git-git remote

    使用git的时候难免会用到remote tracking,下面简要记录一下在使用git remote时的一些技巧 (1)add $git remote add origin https://githu ...

  3. careercup-扩展性和存储限制10.4

    题目 有一个数组,里面的数在1到N之间,N最大为32000.数组中可能有重复的元素(即有的元素 存在2份),你并不知道N是多少.给你4KB的内存,你怎么把数组中重复的元素打印出来. 解答 我们有4KB ...

  4. RockBrain USB Server- 云计算虚拟化USB设备集中管理、远程共享解决方案(涉及银企直联)

    RockBrain USB Server- 云计算虚拟化USB设备集中管理.远程共享解决方案(涉及银企直联) 技术需求: 1.企业员工的大量USB Key,需要将key接入USB Server虚拟池, ...

  5. Windows10 IIS安装php manager和IIS URL Rewrite 2.0组件的方法

    Windows10中自带的Server:Microsoft-IIS///8.5/10上安装.微软脑子秀逗,跳过了9,以为能解决版本识别的问题,没想到弄成10,还是出现了版本识别的问题,真是自己打自己的 ...

  6. 爬虫——Scrapy框架案例一:手机APP抓包

    以爬取斗鱼直播上的信息为例: URL地址:http://capi.douyucdn.cn/api/v1/getVerticalRoom?limit=20&offset=0 爬取字段:房间ID. ...

  7. Jqgrid利用正则匹配表达式正确移除html标签

    在使用JqGrid表格插件过程中,遇到一个问题:后台取出来的字段是带有Html标签的,于是将内容填充到表格之后,带有的html标签会把表格撑开或者每一行的内容显示不统一,导致非常难看,就像下图所示: ...

  8. html中的定位

    html中的定位体系 一. 分类 1.常规流static 2.浮动float 3.相对定位relative 4.绝对定位absolute 5.固定定位fixed 二.使用时的区分 在网页布局中,常常都 ...

  9. 【Spark】Spark2.x版的新特性

    一.API 1. 出现新的上下文接口:SparkSession,统一了SQLContext和HiveContext,并且为SparkSession开发了新的流式调用的configuration API ...

  10. JavaScript&jQuery 基本使用

    * 最近连续加班加点三周* 遭不住了 ...* 来点 js / jq 的货* 一个人撸PHP 撸HTML 撸CSS 撸JavaScript 撸jQuery* 不管有没有用记录一下** 1:jQuery ...