JAVA学习笔记——面向对象的封装和继承

一. 封装

1. 概述: 

• 面向对象的三大特征之一(封装,继承,多态

•意义:对象名直接访问成员变量的方式来对属性赋值会存在数据安全隐患,因而要对属性进行封装(不让外界直接访问成员变量)

•好处:提高代码安全性(方法控制成员变量)

           提高代码复用性(代码用方法封装)

•方法:

(1)使用provate关键字修饰符修饰成员变量

(2)提供公共的访问方法:

        给成员变量赋值的公共方法(set方法);

   获取成员变量值的公共方法(get方法)。

2.访问权限

•4种访问权限:

public(共有的)>protected(受保护的)>default(不加任何访问权限修饰符,即默认的)>private(私有的)

•能修饰的访问权限只有public默认的

当类被public修饰,则该公共类可被任何包中类访问;

当类被默认的修饰,则该类被该包中的任意类访问。

•4种访问权限修饰符均能修饰类的成员变量和成员方法。

•访问权限修饰符
同一个类同一个包不同包中的子类不同包中的非子类

public

       √

protected

default

private

如果一个JAVA源文件里有public类,则源文件名必须与public类的类名相同

3.this 关键字

•this代表了当前对象的一个引用,通过这个名字可以顺利地访问对象、修改对象的数据成员、调用对象的方法。

•this对象是JAVA语言实现封装的一种机制。

•作用:(1)区分同名的局部变量和全局变量

                      格式:this.全局变量

            (2)区分同名的成员变量和形参

                     格式:this.成员变量

           (3)访问当前对象的成员方法

                     格式:this.成员方法(参数)

           (4)当构造方法重载时,用来调用同类的其他构造方法

                   格式:this(参数)         放在方法体第1行

4.静态修饰符static

static修饰初始化块

初始化块是类中可以出现的又一重要成员。初始化块没有名称和标识,因此无法通过类和对象来调用,只在创建对象时自动执行并且在执行构造方法之前执行。

初始化块语法格式:

【修饰符】{
     //初始化代码(包含任何可执行语句)
 }

一个类里可以有多个初始化块,相同类型的初始化快间,先执行被定义的那个。

初始化块的修饰符只能是static,被static修饰的初始化块称为静态初始化块

初始化块的作用是对Java对象执行指定的初始化操作与构造方法的作用相似,但初始化块是一段固定的执行代码,没有返回值和参数值。

系统在内初始化阶段执行静态初始化块,因此静态初始化快总是比普通初始化块先执行,静态初始化快在类加载的时候执行,普通初始化块在创建对象调用构造方法之前执行。

系统在类初始化阶段执行静态初始化时,按照类的层次,先执行顶级类的静态初始化块,然后执行父类的静态初始化块,最后执行此类的静态初始化块。

static修饰成员变量

若一个成员被声明为static,则它不在任何对象的内存区里,而在类的公共存储单元中。类的任何对象访问它时,存取到的都是相同的数值。

静态变量也称为类变量类属性,非静态变量称为实例变量实例属性,静态成员变量的初始化先于非静态成员的初始化。

静态变量可以使用访问权限修饰符

静态数据成员的初始化可以由用户在定义时进行,也可以由静态初始化块来完成。

static修饰成员方法

用关键字static修饰的方法称为类方法静态方法。类方法体中只能访问类变量,而且类方法既可以通过对象来调用,也可以通过类名来调用。

在声明static的方法时的限制:

(1)仅能调用其他的static方法;

(2)只能访问static数据;

(3)不能以任何方式引用this或super。


二.继承

1.概念:

•继承是面向对象程序设计的又一重要特性,它允许创建分等级层次的类

•继承是一种由已有类创建新类的机制。

•在Java语言中被继承的类称为基类或者父类,由继承形成的类称为派生类或者子类

•子类继承了父类定义的变量和方法,且可以修改父类的属性、重写父类方法,添加自己特有的变量和方法。

•Java中规定一个父类可以同时拥有多个子类的一个子类,但一个子类只能有一个父类,即单重继承。Java允许多层继承,即子类还可以有他自己的子类。

2.类继承的实现:

类的继承是通过关键字extends来实现的

格式:

【访问权限】class 子类名 extends 父类名

若没有extends子句,则子类继承Object

3.继承成员变量和方法

(1)子类和父类在同一个包中:子类可继承父类中的public 、protected和default类型的成员变量和方法,不能继承private型的成员变量和方法;

(2)子类和父类不在同一个包:子类可继承父类的public、protected的成员变量和方法,不能继承default和protected的成员变量和方法;

(3)子类不能继承父类的构造方法。

4.子类的构造方法

  • 子类的构造方法总是先调用父类的某个构造方法,用super实现调用

格式:super(参数)

  • 子类调用父类构造方法的几种情况:

(1)父类中没有定义构造方法:系统自动为父类添加一个无参、方法体为空的构造方法,子类可不显示的调用、系统创建子类对象时自动调用

(2)父类定义了无参数构造方法,同样可不显示;

(3)父类定义了有参数构造方法,子类构造方法中第一条语句必须使用super语句调用父类有参数构造方法

5.覆盖

覆盖是指子类拥有父类相同成员

覆盖的两种情况:

(1)成员变量的覆盖:子、父类成员变量同名,不管其类型是否相同,父类都会被覆盖

(2)成员方法的覆盖:子、父类成员方法在方法名、返回类型、参数个数以及类型方面都相同时,父类被子类覆盖

覆盖方法访问权限>所覆盖方法访问权限

子类若想使用父类中被隐藏的成员方法,必须使用关键字super

格式:super.数据成员

          super.成员方法(参数)

6.关键字final

final可用于修饰类、变量和方法

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值