一、封装

概念:

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

实现步骤:

修改属性的可见性——设为private。

创建getter/setter方法——用于属性的读写。

在getter/setter方法中加入属性控制语句——对属性值的合法性进行判断。

包:

作用:

管理Java文件;解决同名文件冲突。

定义名:

package 包名

必须放在Java源程序的第一行,包名间可以用“.”隔开。

系统中的包:

java.(功能).(类)

java.lang.(类)——包含Java语言基础的类

java.util.(类)——包含Java语言中各种工具类

java.io.(类)——包含输入、输出相关功能的类

包的使用:

(1)import 包名

(2)Java中包的命名规范是全小写字母拼写

(3)~~.*——加载其下所有文件

访问修饰符:

可以修饰属性和方法的访问范围。
 
访问修饰符 本类 同包 子类 其他
private      
默认    
protected  
public
 
 
 
 
 
 

this关键字:

1、this关键字代表当前对象。 this.属性——操作当前对象的属性。this.方法——调用当前对象的方法。
2、封装对象属性的时候,经常会使用this关键字。

内部类:

定义:

内部类(Inner Class)就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。

作用:

1、内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一包中的其他类访问该类。
2、内部类的方法可以直接访问外部类的所有数据,包括私有的数据。

分类:

成员内部类、静态内部类、方法内部类、匿名内部类。
****要使用内部类的方法时,首先创建一个外部类对象,通过 外部类对象.new 内部类() 形式创建内部类对象,最后调用内部类方法。****

成员内部类(普通内部类):

1、定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去new一个内部类对象,即:内部类 对象名=外部类对象.new 内部类();
2、成员内部类的.class文件:外部类名$内部类名.class
3、如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量或方法需使用this关键字(外部类.this.成员变量/方法)。

静态内部类(static修饰的内部类):

1、静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问。
2、若外部类的静态成员和内部类的成员名称相同,可通过 类名.静态成员 访问外部类的静态成员;若不相同,则可通过 成员名 直接调用外部类的静态成员。 3、创建静态内部类对象时,不需要外部类的对象,直接“内部类 对象名=new 内部类(); ”

方法内部类(内部类定义在外部类的方法中,方法内部类只在该方法内可以使用):

1、方法内部类不能使用访问控制符和static修饰符。

二、继承(类与类的一种关系,Java中的继承是单继承)

优势:

子类拥有父类的所有属性和方法(private修饰的无效);实现代码复用。

语法规则:

class 子类 extends 父类

方法的重写:

如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法。返回值类型、方法名、参数类型和个数都要与父类的方法相同才叫方法的重写。

继承的初始化顺序:

初始化父类再初始化子类;先执行初始化对象中属性,再执行构造方法中的初始化。

final关键字:

final可以修饰类、方法、属性和变量。
final修饰类,则该类不允许被继承。
final修饰方法,则该方法不能被重写。
final修饰属性,则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)。
final修饰变量,则该变量的值只能赋一次值,即变为常量。

super关键字:

在对象的内部使用,可以代表父类对象。
访问父类的属性:super.age
访问父类的方法:super.eat()
如果子类构造方法中既没有显式调用父类的构造方法,而父类中又没有无参的构造方法,则编译出错。

object类:

object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承object类。
tostring()方法:返回对象的哈希码(对象地址字符串),可以通过重写tostring()方法表示出对象的属性。
equals()方法:比较的是对象的引用是否指向同一个内存地址。一般情况下比较两个对象时比较的是值是否一致,所以要进行重写。

三、多态(继承是多态的实现基础)

对象的多种形态:

1、引用多态:

父类的引用可以指向本类/子类的对象。

2、方法多态:

创建本类对象时,调用的方法为本类方法。
创建子类对象时,调用的方法为子类重写的方法或者继承的方法。

引用类型转换:

1、向上类型转换(隐式/自动类型转换),是小类型到大类型的转换。
2、向下类型转换(强制类型转换),是大类型到小类型的转换。
3、instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题。

抽象类(abstract class):

1、语法定义:

抽象类前用abstract关键字修饰,则该类为抽象类。

2、应用场景:

a、某些情况下,某个父类只知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。
b、从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。

3、作用:

限制规则子类必须实现某些方法,但不关注实现细节。

4、使用规则:

a、abstract定义抽象类。
b、abstract定义抽象方法,只是声明,不需要实现。
c、包含抽象方法的类是抽象类。
d、抽象类中可以包含普通的方法,也可以没有抽象方法。
e、抽象类不能直接创建,可以定义引用变量。

接口:

1、接口概念:

接口可以理解为一种特殊的类,由全局常量和公共的抽象方法所组成。类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类必须提供某些方法。

2、接口定义:

和类定义不同,定义接口不再使用class关键字,而是使用interface关键字。
[修饰符] abstract interface 接口名[extends 父接口1,父接口2...]
{
零个到多个常量定义...
定个到多个抽象方法的定义...
}
接口就是用来被继承,被实现的,修饰符一般是public,不能使用private和protected修饰接口。
接口中的方法都是抽象方法。
接口中方法不能有方法体。//void geta();

3、使用接口:

一个类可以实现一个或多个接口,实现接口使用implements关键字。Java中一个类只能继承一个父类,是不够灵活的,通过实现多个接口可以做补充。
继承父类实现接口的语法为:
[修饰符] class 类名 extends 父类 implements 接口1,接口2...
{
类体部分//如果继承了抽象类,需要实现继承的抽象方法;要实现接口中的抽象方法
}

如果要继承父类,继承父类必须在实现接口之前。

接口在使用过程中经常与匿名内部类配合使用。
匿名内部类就是没有名字的内部类,所用于关注实现而不关注实现类的名称。
Interface i=new Interface()
{
public void method(){
~~
}
}

四、UML

Unified Modeling Language(统一建模语言/标准建模语言)是一种支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持。
常用UML图——用例图、序列图、类图
常用建模工具——Visio、Rational Rose、PowerDesign

Java学习笔记(三)——封装、继承、多态的更多相关文章

  1. java学习笔记6--类的继承、Object类

    接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...

  2. Java学习笔记(十)——多态

    一.多态 1.对象的多种形态 (1)引用多态: 父类的引用可以指向本类的对象 父类的引用可以指向子类的对象 (2)方法多态: 创建本类对象时,调用的方法为本类方法: 创建子类对象时,调用的方法是子类方 ...

  3. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  4. C#学习笔记_10_设计模式&继承&多态

    10_设计模式&继承&多态 设计模式 由前人总结的用来解决特定问题的解决方案 单例模式 在一个项目的不同模块中获取对象,获取到的是同一个对象 代码 继承 概念:如果多个类中具有相同的字 ...

  5. Java学习笔记之封装与继承

    封装 1,将属性定义为私有的(private)   不能通过  对象名.属性  来直接访问,但是可以通过方法来间接的访问, 2,封装的意义:公有属性可以被随意修改,并且不能被程序察觉.封装后,别人通过 ...

  6. JAVA的三大特征 封装继承多态- 简单总结

    简单总结一下 封装-即从很多类的抽取相同的代码 写在一个类里. 好处是 代码的重用,安全. 继承-减少代码的书写. 其好处也是 代码的重用. 多态- 把不同的子类对象都当作父类来看,可以屏蔽不同子类对 ...

  7. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

  8. Java 学习笔记(7)——接口与多态

    上一篇说了Java面向对象中的继承关系,在继承中说到:调用对象中的成员变量时,根据引用类型来决定调用谁,而调用成员方法时由于多态的存在,具体调用谁的方法需要根据new出来的对象决定,这篇主要描述的是J ...

  9. Java学习笔记三.3

    9.异常处理:Java中的异常处理对象就是将以前的if语句进行的判断进行抽象化,并形成的一套错误处理体系.最顶端是Throwable,接着是Error,Exception,其中Exception又明显 ...

  10. Java学习笔记三.2

    5.继承 //Java中所有对象都显式/隐式的继承子Object类 class fu{ fu(){ System.out.println("fu..."+getNum()); sh ...

随机推荐

  1. 6.2 小表驱动大表(exists的应用)

    1. 优化原则:小表驱动大表,即小数据集驱动大数据集. select * from A where id in (select id from B) 等价于: for select id from B ...

  2. 【Java每日一题】20170302

    20170301问题解析请点击今日问题下方的“[Java每日一题]20170302”查看(问题解析在公众号首发,公众号ID:weknow619) package Mar2017; public cla ...

  3. python基础学习(十一)公共方法

    Python内置函数 Python 包含了以下内置函数: 切片 切片 使用 索引值 来限定范围,从一个大的 字符串 中 切出 小的 字符串 列表 和 元组 都是 有序 的集合,都能够 通过索引值 获取 ...

  4. Hibernate入门(六)---------HQL语句

    Query: 代表面向对象的一个Hibernate查询操作.在Hibernate中,通常使用session.createQuery()方法接收一个HQL语句,然后调用Query的 list()或uni ...

  5. vbscript 语言通过序列和ADODB实现取号不重复

    目的:通过VBScript脚本利用序列的性质,实现取号不重复 首先,表空间中创建表名为TABLE_YEWID的表格,主要有以下几个字段 -- Create table create table TAB ...

  6. Java中对象和json互相转换的工具类

    package com.Dingyu.util; import java.util.List; import com.fasterxml.jackson.core.JsonProcessingExce ...

  7. TCP 三次握手与四次断开

    三次握手建立连接 TCP连接是通过三次握手来连接的. 第一次握手 当客户端向服务器发起连接请求时,客户端会发送同步序列标号SYN到服务器,在这里我们设SYN为x,等待服务器确认,这时客户端的状态为SY ...

  8. 洛谷P4104 [HEOI2014]平衡(dp 组合数学)

    题意 题目链接 Sol 可以把题目转化为从\([1, 2n + 1]\)中选\(k\)个数,使其和为\((n+1)k\). 再转化一下:把\((n+1)k\)划分为\(k\)个数,满足每个数在范围在\ ...

  9. ACL技术总结

    1.ACL的全称是访问控制列表,本质上是定义一组策略,以便指导报文在交换机内部的转发行为. 2.要配置策略,首先要明确ACL应用的对象,可以是针对端口,也可以是针对特殊的一条流. 针对端口,就是指端口 ...

  10. X100S Collection Before 2014/08/01

    风暴前的东京湾 // Tokyo Bay before Storm 上野公园 // Ueno Park