Java学习 · 初识 面向对象深入一
面向对象深入
1.面向对象三大特征
a) 继承 inheritance
子类可以从父类继承属性和方法
子类可以提供自己的属性方法
b) 封装 encapsulation
对外隐藏某些属性和方法
对外公开某些属性和方法
c) 多态 polymorphism
适应变量的多种变化
1.1 封装
a) 为什么需要封装
隐藏对象内部的复杂性,只对外公开简单接口。便于外界调用,提高系统可扩展性、可维护性;

b) 实现封装
使用访问权限符
成员四种访问权限
- public 公共的
项目可见
- protected 受保护的
类本身访问
包内其他类访问
子类访问
- default 默认的(包可见)
类本身访问
包内其他类访问
- private 私有的
只被这个类本身访问
类的两种访问权限
- public
项目中所有类访问
- default
同一个包内的类访问

封装要点
- 类的属性的处理
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("吃奶");
}
}
其他
- Java只有单继承
- 所有类的公共父类为Object
1.3 方法的重写

a) == 方法名、参数相同
b) <= 返回值类型和异常类型子类小于父类
c) >= 访问权限子类大于父类
Object类
Object类是所有类的基类,其中含有许多方法
1.示例:重写toString (默认返回包+类+@哈希码)


- 2. 对象的比较 == 与equal
a) ==
a) 比较两基本变量的值是否相同
b) 比较两个引用类型内存是否相同,是否指向同一对象
b) Equal
a) 两对象内容是否相同
1.4 super关键字
b) super是直接父类对象的引用
c) 可以通过super来访问父类中被子类覆盖的属性和方法
1.5 多态
多态性是OOP中一个重要特性,用来实现动态联编,就是程序的最终状态只有再执行过程才被决定而非编译期间决定
- 如何使用多态
a) 引用类型的两种类型
i. 编译时类型:声明时的类型决定
ii. 运行时类型:由对象实际类型决定
b) 多态存在的三个必要条件
i. 要有继承
ii. 要有方法重写
iii. 父类引用指向子类对象
示例




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

1.6 final关键字
- final关键字可以来修饰变量、类、方法
a) 修饰变量:相当于定义了一常量,不可更改
b) 修饰方法:在子类中不能覆盖
c) 修饰类:无法被继承
Java学习 · 初识 面向对象深入一的更多相关文章
- Java学习 · 初识 面向对象基础一
面向对象基础 1.1面向过程与面向对象的区别 面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计.但二者并不是对立的,在解决 ...
- Java学习 · 初识 面向对象深入二
面向对象深入 1. 抽象类 a) 声明 i. 抽象方法和抽象类必须用abstract来修饰 ii. 没有方法体,不需要实现 b) ...
- Java学习 · 初识 面向对象基础二
Package 为什么需要使用package a) 解决类重名的问题 b) 便于管理类 怎么使用package a) 类的第一句非注释性语句 b) 命名:域名倒着写,再加上模块名 注意 ...
- Java基础-初识面向对象编程(Object-Oriented-Programming)
Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...
- java学习之面向对象概念
思考的两种方式: 举例: 把大象放到冰箱里 一.面向过程 :[打开冰箱->把大象放里面->关上冰箱门]面向过程注重的是过程,也就是(动作[函数]),然后按照动作依次去执行就好了. 代表语言 ...
随机推荐
- HIDU 2094
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2094 产生冠军 Time Limit: 1000/1000 MS (Java/Others) M ...
- UI到底应该用xib/storyboard完成,还是用手写代码来完成?
UI到底应该用xib/storyboard完成,还是用手写代码来完成? 文章来源:http://blog.csdn.net/libaineu2004/article/details/45488665 ...
- 使用 jTessBoxEditor 生成 tesseract-orc 的字典
本文使用图片方式记录使用 jTessBoxEditor 一站式生成自动文件的方式 首先感谢 Tesseract OCR 讨论群 389402579 的管理员[创世倾城 QQ:457606663] 的帮 ...
- 利用binlog2sql闪回丢失数据
today,i'll using the open source tool named "binlog2sql" which is release by danfengch ...
- Linux磁盘管理和lvm
磁盘管理 硬盘接口和硬盘种类 从整体的角度上,硬盘接口分为IDE.SATA.SCSI和SAS四种,IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接口的硬盘则主要应用于服务器市场,而SAS ...
- linux系统可执行文件添加环境变量使其跨终端和目录执行
在命令行终端输入:echo $PATH 回车可打印出PATH变量对应的路径 现有一可执行文件qtFirstC,文件所在目录为:/home/lolors/qtFirstC 此时test只能在此目录下运行 ...
- json提取嵌套数据
//数据 string html = "{\"code\":\"0000\",\"desc\":\"\",\& ...
- Flask之Flask实例有哪些参数
常用的参数应用实例 from flask import Flask, render_template, url_for, session, request, redirect app = Flask( ...
- Linux入门——SSH免密登录
SSH免密登录 1.简介 SSH是一种网络协议,用于计算机之间的加密登录. 本文针对的实现是OpenSSH,它是自由软件,应用非常广泛. 2.初始化公钥私钥 有rsa,dsa两种加密方式,生成的公钥私 ...
- 1.Python是什么
前言 这里只是根据个人的理解而谈,庸俗浅薄,不是科学定义,也可以认为是假装自己理解啦,掩耳盗铃罢了.知无涯是多么的恐怖,哈哈 计算机语言 此处的语言不同于我们生活中所说的语言,因为生活中的语言 ...