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学习之面向对象概念
思考的两种方式: 举例: 把大象放到冰箱里 一.面向过程 :[打开冰箱->把大象放里面->关上冰箱门]面向过程注重的是过程,也就是(动作[函数]),然后按照动作依次去执行就好了. 代表语言 ...
随机推荐
- Grunt中批量无损压缩图片插件--Grunt-contrib-imagemin
Photoshop 切出的图片,无论是 PNG 还是 JPEG/JPG 格式,都含有许多相关信息,又或多余的颜色值,这些信息和颜色值,对网页前端并没有用处,反而增加图片大小,所以 Google Pag ...
- chromium之histogram.h
histogram不知道是干啥的 // Histogram is an object that aggregates statistics, and can summarize them in // ...
- SQL Server公用表达式CET递归查询所有上级数据
with cte as( select bianma,fjbm from #tree where chkDisabled='true' union all select t.bianma,t.fjbm ...
- Python的scrapy之爬取顶点小说网的所有小说
闲来无事用Python的scrapy框架练练手,爬取顶点小说网的所有小说的详细信息. 看一下网页的构造: tr标签里面的 td 使我们所要爬取的信息 下面是我们要爬取的二级页面 小说的简介信息: 下面 ...
- 从零开始一个http服务器(一)-开始
从零开始一个http服务器 (一) 代码地址 : https://github.com/flamedancer/cserver git checkout step1 一个简单的socket serve ...
- 中国大学MOOC-C程序设计(浙大翁恺)—— 时间换算
时间换算(10分) 题目内容: UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8.现在,你的程序要读入一个整数,表示BJT的时和分.整数的个位和十位表示分,百位和千位表示小时.如果小 ...
- C语言程序设计:现代方法(第2版)第二章全部习题答案
前言 本人在通过<C语言程序设计:现代方法(第2版)>自学C语言时,发现国内并没有该书完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考.这些答案是本人自己解 ...
- PWA-网络
PWA-网络 fetch API Get fetch('/some/url',{ method:'GET' }).then(function(resp){ //success }).catch(fun ...
- ggplot2画简单的heatmap
gg_heatmap gg_heatmap PeRl ggplot2 heatmap 偶然的机会,发现ggplot2画的heatmap也挺好看的,除了不能画出聚类树来(手动滑稽). 随意新建了两个矩阵 ...
- 破解有道词典在线翻译接口--python
没什么好说的,直接上代码. import requests # import json import time import random import hashlib translate = inp ...