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学习之面向对象概念
思考的两种方式: 举例: 把大象放到冰箱里 一.面向过程 :[打开冰箱->把大象放里面->关上冰箱门]面向过程注重的是过程,也就是(动作[函数]),然后按照动作依次去执行就好了. 代表语言 ...
随机推荐
- ARP, Fragmentation and Reassembly
Address Resolution Protocol IP addresses are said to be logical, because they are defined in terms o ...
- labview
1.labview适用于测试测量领域,用于快速构建PC端上位机程序 2.例子: 我的电气参数测试仪. 上位机软件比想象的做的快了十几天... 学校的创新基金可以交差了,界面还是个人比较满意了.. 上图 ...
- unittest单元测试框架之测试用例的跳过(skip) (六)
1.跳过测试用例的方法 @unittest.skip("don't run this case!"): @unittest.skipIf(3<2,"don't ru ...
- iOS获取通讯录所有联系人信息
以下是2种方式: 第一种方法: GetAddressBook.h #import <Foundation/Foundation.h> @interface GetAddressBook : ...
- BZOJ1023: [SHOI2008]cactus仙人掌图(仙人掌dp)
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3467 Solved: 1438[Submit][Status][Discuss] Descripti ...
- input 输入的一些限制说明
input输入框 只能输入 数字可以有小数点 <input class="form_text" id="purchasePrice" name=" ...
- OrientDB部署
1. 环境准备 操作系统: Centos6.8 内存: 8G(分布式部署时建议4G及以上,否则需要手动修改JVM配置) JDK: 建议jdk8版本(3.0版本要求jdk8) 环境变量:需配置JAVA_ ...
- nginx 日志记录 自定义详解(分析上报用)
nginx 日志记录 自定义详解 1.log_format 普通格式 log_format main '$remote_addr - $remote_user [$time_local] $req ...
- tcp滑动窗口与拥塞控制
TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现.一.滑动窗口协议 所谓滑动窗口协议,自己理解有两点:1. “窗口 ...
- [Jmeter并发报错解决方案]org.apache.http.NoHttpResponseException: 10.0.4.147:8000 failed to respond
背景:公司模型框架是Nginx+uwsgi+Django+nginx,一开始使用Jmeter进行高并发请求测试,发现成功率只有50%,换用postman,成功率100%,代码进行高并发一样不会报错. ...