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学习之面向对象概念
思考的两种方式: 举例: 把大象放到冰箱里 一.面向过程 :[打开冰箱->把大象放里面->关上冰箱门]面向过程注重的是过程,也就是(动作[函数]),然后按照动作依次去执行就好了. 代表语言 ...
随机推荐
- Web Pages
什么是Web Pages 1.WebPages是三种创建ASP.NET网站或Web应用程序模式中的一种 2.而其两种编程模式是MVC(Model-View-Controller,模型-视图-控制器)和 ...
- CSS技巧之向下箭头
思路:使用◇符号(可在输入法的软键盘找到该符号),使用定位选择位置,并隐藏溢出的上半部分细点:1.使用i标签的楷体属性把◇变大2.给i只有◇符号一半的高度,并隐藏溢出,正常显示一个向上箭头3.对s使用 ...
- ARC下IBOutlet用weak还是strong
原文来自这里. 今天用Xcode5的时候,发现默认的IBoutlet的属性设置为weak——因为Xcode5建立的工程都是ARC的了.但是当时还有点不明白,因为项目的原因,一直没有正式使用过ARC.于 ...
- 浅析Vue原理(部分源码解析)
响应式 Object.defineProperty Object.defineProperty(obj, prop, descriptor) // 对象.属性.描述符 Object.definePro ...
- CF1066A Vova and Train(模拟)
大水题... 题目要求你求能看到的灯笼数,我们可以分为3部分 总共的灯笼数——————1 在 l 左面的灯笼数(不包括lll)——————2 在 r 左面的灯笼数(包括rrr)——————3 我们知道 ...
- git找回本地误删的文件或文件夹
一:首先,我们先用git status 看看工作区的变化 application/Admin/Conf/config.php 如果要恢复文件记住这个 application 如果要恢复文件夹记住这个工 ...
- angular2路由之routerLinkActive指令
angular2的routerLinkActive指令在路由激活时添加样式class .red{ color: red;} <a routerLink="/user/login ...
- Email Helper
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft.Xrm.Sdk.Que ...
- 学习 Git的使用过程
原文链接: http://www.cnblogs.com/NickQ/p/8882726.html 学习 Git的使用过程 初次使用 git config --global user.name &qu ...
- 单片机-C语言-定义和申明
以下代码是单片机程序,51单片机,编译器为HT-IDE3000, 简单来说 头文件中只能申明, 变量在头文件中申明时,要加上extern 这个关键字用来告诉编译器,变量在其它的文件中定义,为什么要在头 ...