面向对象深入

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. HDU 1017A Mathematical Curiosity (暴力统计特殊要求个数)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1017 A Mathematical Curiosity Time Limit: 2000/1000 M ...

  2. js 中 函数的返回值问题

    var result=''; function searchByStationName( address ) { // map.clearOverlays();//清空原来的标注 var keywor ...

  3. Web—05-常用css列表

    color 设置文字的颜色,如: color:red; font-size 设置文字的大小,如:font-size:12px; font-family 设置文字的字体,如:font-family:'微 ...

  4. laravel 5.7 resources 本地化 简体中文

    使用方法: 新建目录[项目目录/resources/lang/zh] 按以下内容创建文件,并将内容复制到文件中 修改 config/app.php 'locale' => 'zh', 'fall ...

  5. chromium之dynamic_annotations

    看看介绍 // This file defines dynamic annotations for use with dynamic analysis // tool such as valgrind ...

  6. mongodb副本集的docker化安装

    1. 定义 一般只要生产环境就需要考虑冗余设计,保证在某一台服务器由于某种原因宕机后服务还可以正常运行. mongo副本集是一组服务器,其中有一个主服务器(primary),用于处理客户端请求:还有多 ...

  7. [翻译]Hystrix wiki–Home

    注:本文并非是精确的文档翻译,而是根据自己理解的整理,有些内容可能由于理解偏差翻译有误,有些内容由于是显而易见的,并没有翻译,而是略去了.本文更多是学习过程的产出,请尽量参考原官方文档. 什么是Hys ...

  8. Java : java基础(5) Socket网络编程

    使用 DatagramSocket 创建一个 UDP协议的Socket, 用DatagramPacket创建一个数据包,可以指定ip和端口号以及包的数据,用socket.send()可以发送这个数据包 ...

  9. Java基础之instanceof和transient关键字用法

    instanceof 用于检测指定对象是否是某个类(本类.父类.子类.接口)的实例.Java中的instanceof也称为类型比较运算符,因为它将类型与实例进行比较. 返回true或false. 如果 ...

  10. BINARYSEARCH有り無しのパフォーマンスの違い

    BINARY SEARCHを使用したパフォーマンス検証を行ってみた.この例では.BKPFが約1万件.BSEGが約3万件になるよう調整している.また.SQLの実行に係る時間は無視する事にする. サンプル ...