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学习之面向对象概念
思考的两种方式: 举例: 把大象放到冰箱里 一.面向过程 :[打开冰箱->把大象放里面->关上冰箱门]面向过程注重的是过程,也就是(动作[函数]),然后按照动作依次去执行就好了. 代表语言 ...
随机推荐
- ovs的卸载
使用apt-get安装的openvswitch,然后卸载好麻烦撒,而且还没有相关资料说一下怎么删除的,特此记录一下,希望有个参考 首先把服务器上使用ovs新建的虚拟网桥全部删除掉 然后把原有的内核删除 ...
- 基于VC++的WinCE网口通信
基于VC++的WinCE网口通信 WinCE下的网络编程与Windows下的非常类似,只是个别API函数有所不同.同样分为UDP和TCP两种,UDP就是无连接的通信,通过“用户数据报协议”(UDP)来 ...
- ARM MDK 编译产生:RO、RW和ZI DATA说明
1.比如编译一个工程文件,产生如下提示信息: Program Size: Code=18938 RO-data=622 RW-data=124 ZI-data=7724 RO段.RW段和ZI段 要了解 ...
- Swift_类和结构体
Swift_类和结构体 点击查看源码 struct Resolution { var width = 0 var height = 0 } class VideoMode { var resoluti ...
- optimize table 删除空洞--MYSQL
来看看手册中关于 OPTIMIZE 的描述: OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... 如果您已经删除 ...
- RHEL6(RedHat6)和SUSE11系统配置IPV6地址
临时生效 RHEL6和SUSE11系统临时配置IPv6地址操作是一样的,比如添加如下ipv6地址. ip - addr add ::A/ dev eth2 ip - route add default ...
- 配置SpringBoot方便的切换jar和war
配置SpringBoot方便的切换jar和war 网上关于如何切换,其实说的很明确,本文主要通过profile进行快速切换已实现在不同场合下,用不同的打包方式. jar到war修改步骤 pom文件修改 ...
- MySQL---数据表基本操作(增删改查、排序、分组、连表)
一.表操作 1.创建表 create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGINE=InnoDB DEFAULT CHARSET=utf8 是否可空,nul ...
- 百度地图定位JSP代码
附:百度地图API:http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html#a1b0?qq-pf-to=pcqq.c2c &l ...
- 爬取豆瓣电影Top250
1 import json import requests from requests.exceptions import RequestException import re import time ...