Java三大特征:封装 继承 多态
内部类:成员内部类、静态内部类、方法内部类、匿名内部类。
内部类:定义在另外一个类里面的类,与之对应,包含内部类的外部类被称为外部类。
内部类的作用:(1)内部类提供了更好的封装,可以把内部类隐藏在外部类之内,部允许同一个包中其他类昂问该类。(2)内部类的方法可以直接访问外部类的所有数据,包括私有数据。(3)内部类所实现的功能使用外部类照样可以实现,只是有时使用内部类更方便。
成员内部类(普通内部类):内部类创建对象时,必须使用外部类对象来创建,而不能直接用new创建一个内部对象,即内部类 对象名=外部类对象. new 内部类();外部类不能直接调用内部类方法,必须通过内部类对象来访问其属性和方法。如果外部类和内部类具有相同的属性或方法,内部类默认访问自己的属性和方法。如果需要访问外部类的成员变量,可以用this关键字,即外部类.this.属性名/方法.
静态内部类:是static修饰的内部类。特点是:(1)静态内部类不能访问外部类的非静态成员,但是可以通过new外部类().成员来访问。(2)如果外部类静态成员与内部类成员名相同,可通过类名.静态成员来访问外部类静态成员;如果外部类的静态成员与内部类成员名称不同,则可以通过成员名直接访问外部类的静态成员。
(3)创建静态对象时,不需要外部对象可以直接创建,即内部类 对象名=new 内部类();
方法内部类:内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在方法内可以使用。由于方法内部类不能在外部类以外的地方使用,因此方法内部类不能使用访问控制符和static修饰。
继承
子类拥有父类的所有属性和方法,除了父类私有成员。
继承初始化顺序:(1)初始化父类再初始化子类。(2)先执行初始化对象中的属性,再执行构造方法中的初始化。
final关键字:final可以修饰类、方法、属性、变量。final修饰类的画,此类不能被继承;final修饰方法的话,此方法不能被重写;final修饰属性的话,则该属性不会隐式初始化,类的初始化必须有值,要么在声明时赋值,要么在构造方法中赋值;final修饰变量的话,变量变为常量,而且仅能赋值一次。
super关键字:在对象内部表示父类对象。
super应用:(1)如果子类的构造方法没有显式调用父类的构造方法,则系统默认调用父类无参构造方法。(2)如果显式调用父类的构造方法,必须放在第一行。(3)如果子类构造方法既没有显式调用父类构造方法,而且父类方法没有无参构造方法,则编译出错。
多态
父类引用指向本类对象(执行本类方法);父类引用指向子类对象(要么执行子类方法,要么执行继承的父类方法)。
abstract修饰符
作用:限制子类必须实现的方法,不关注如何实现。
使用规则:(1)abstract定义抽象类;(2)abstract修饰抽象方法,只有声明,不用实现(抽象方法没有执行体大括号,并且以分号结束);(3)包含抽象方法的类是抽象类;(4)抽象类中可以包含抽象方法,也可以没有抽象方法;(5)抽象类不能直接创建,可以定义引用变量。
接口
接口由全局变量和公共的抽象方法所组成,规定某些类的实现方法,用关键字interface定义接口,即[修饰符] interface 接口名 [extends 父接口1,父接口2...]{0——n个常量定义;
0——n个抽象方法定义;}
接口通常是用来被继承、被实现的,修饰符一般用public,不能用private和protected修饰接口。接口必须有abstract修饰,接口可以定义多个父接口,因为接口中的都是常量,所以系统默认用public static final修饰常量,即使常量前没有修饰符修饰,系统也会自动加上。因为接口中全是抽象方法,所以系统默认用public abstact [修饰符] 修饰方法,即使方法前没有修饰符,系统也会自动加上。
一个类可以实现一个或多个接口,用implements实现,如果要继承父类,继承父类必须在实现接口之前。接口的使用是通过接口的引用指向实现接口的对象。接口经常配合匿名内部类使用,如:interface i=new interface(){ public void method(){} };(必须有分号)
包名命名规范应该全是小写字母。
import中的*只能代表类,不能代表包。如果使用其他类,必须使用import导入。
Java.lang.Object是所有类的父类。
object是所有类的父类。以下是它的两个重要方法。
(1)toString()
(2)equals(),比较的是对象是否指向同一块内存地址。
类对象:描述的是类的代码信息,即类的属性。
类的对象:描述的是类的数据域,即类的属性值。
Java三大特征:封装 继承 多态的更多相关文章
- Java三大特性(封装,继承,多态)
Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...
- JAVA的三大特征 封装继承多态- 简单总结
简单总结一下 封装-即从很多类的抽取相同的代码 写在一个类里. 好处是 代码的重用,安全. 继承-减少代码的书写. 其好处也是 代码的重用. 多态- 把不同的子类对象都当作父类来看,可以屏蔽不同子类对 ...
- java面向对象(封装-继承-多态)
框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...
- Java三大特征之继承(二)
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
- Java基础——面向对象(封装——继承——多态 )
对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...
- OOP三大核心封装继承多态
OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用 ...
- 深入理解Java面向对象三大特性 封装 继承 多态
1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...
- C++三大特性 封装 继承 多态
C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...
- java类的封装 继承 多态
1.猜数字小游戏 package cn.jiemoxiaodi_02; import java.util.Scanner; /** * 猜数字小游戏 * * @author huli * */ pub ...
- 封装继承多态-java面向对象三大特征
第七章 封装和继承 一.面向对象的三大特征 封装.继承.多态 二.封装 将类的属性(字段)设置为私有的(private),并添加getter/setter方法操作属性. 注意:get|set方法的固 ...
随机推荐
- Julia基础语法字符和字符串
1.Julia字符串 2.字符
- Xshell远程连接Linux系统
一般来说我们连接Linux,会使用到一些远程连接工具 比如:Xshell和Xftp Xshell:远程连接linux系统 Xftp:远程在Linux系统中上传或下载文件 Xshell和Xftp百度云链 ...
- 在vue中使用ztree树插件
插件资源及api:树官网 本事例是在vue3.0+中演示,事例是实际项目中正在用的组件所以部分打了马赛克. 1.插件准备(提前准备好插件文件) 可以直接在官网下载,搭建好脚手架后将准备好的文件放在li ...
- Numpy学习-(2)
我学习numpy过程的记录 1. 切片和索引 (1) 两种切片方式示例: (2) 多维数组: import numpy as np a = np.array([[1,2,3],[3,4,5],[4,5 ...
- 通过Java + selenium +testNG + Page Objects 设计模式 实现页面UI的自动化
Page Objects 设计模式 简单的讲,类似与Java面向对象编程,把每个页面都抽象为一个对象类,将页面元素的定位.业务逻辑操作分离开,然后我们可以通过testNG实现业务流程的控制 与 测试 ...
- Java IO 流 -- 转换流: InputStreamReader OutputStreamWriter
java 中 转换流是以字符流的形式操作字节流,需要注意一下两点: 1.操作内容必须是纯文本 2.指定字符集避免乱码 操作控制台输入输出: try (BufferedReader br = new B ...
- jquery选择时分插件
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Python 删除含有只读文件(夹)的文件夹
def rm_read_only(fn, tmp, info): if os.path.isfile(tmp): os.chmod(tmp, stat.S_IWRITE) os.remove(tmp) ...
- Scala的Higher-Kinded类型
Scala的Higher-Kinded类型 Higher-Kinded从字面意思上看是更高级的分类,也就是更高一级的抽象.我们先看个例子. 如果我们要在scala中实现一个对Seq[Int]的sum方 ...
- Cisco 交换机启用netflow
Router2951#configure terminal //Creating Flow Record router2951(config)# flow record NTArecord route ...