Java10-java语法基础(九)——java的封装性

一、Java的三大特性:封装、多态、继承

封装:通过类封装对象的数据成员和成员方法,保证只有可信的类或者对象能够访问这些方法和数据成员,对不可信的类或者对象进行信息隐藏。

继承:继承是从已有的类中派生出新的类,新的类能吸收已有类的数据成员和方法,并能扩展新的能力。

多态:多态性是指不同的对象,收到同一消息可以产生不同的结果。

二、面向对象编程的封装性

封装的实现:通过private关键字实现

1、封装数据成员和成员方法

(1)封装数据成员:一般情况下,没有特殊说明,类的数据成员都是私有的

private 数据类型 数据成员名称;

(2)封装成员方法:一般情况下,没有特殊说明,类的成员方法不要私有,否则就没有可以访问类的途径

private 方法返回值 方法名(参数列表){}

private 类名(参数){} —— 封装构造方法

三、访问控制修饰符

1、private:私有的,只能在类的内部访问;

2、protected:保护的,在类的内部、子类中、同一个包中;

2.5、默认的:在类的外部、子类、同一包中;

3、public:公有的,在任何地方都可以访问。

注意:任何一个java文件中,只能有一个公共主类:public class 类名(){},再写其他类不能加public,可以写class Test(){}

四、setter和getter方法

如何在类的外部访问私有数据成员?

访问:public String getName(){return name;}

修改:public void setName(String name){this.name = name;}

注:

(1)eclipse自动生成get和set方法:右键——source——Generate Getters and Setters…

(2)字段就是数据成员(成员变量)

四、getters和setters方法作用:为用户提供了在类的外部访问类的私有数据成员的方法

1、setters:设置私有数据成员的值

格式:public void set私有数据成员名(私有数据成员类型名 要修改成的私有数据成员名){私有数据成员名 =要修改成的私有数据成员名;}

public void setName(String name) {

this.name = name;

}

2、getters:获取数据成员的值

格式:public String getName(){return私有数据成员名;}

public String getName() {

return name;

}

五、this关键字——代表当前对象

作用:

1、引用本类的数据成员和成员方法:

this.数据成员名

this.成员方法名([参数])

2、调用本类的构造方法

this.构造方法名([参数])

注意:在一个构造方法中,若用this调用另一个构造方法,则它必须是这个构造方法中的第一条语句;

问题:super()和this()为什么一定要在第一行?

  super()在第一行的原因就是: 子类有可能访问了父类对象, 比如在构造函数中使用父类对象的成员函数和变量, 在成员初始化使用了父类, 在代码块中使用了父类等, 所以为保证在子类可以访问父类对象之前要完成对父类对象的初始化。

  this()在第一行的原因就是: 为保证父类对象初始化的唯一性. 我们假设一种情况, 类B是类A的子类, 如果this()可以在构造函数的任意行使用, 那么会出现什么情况呢? 首先程序运行到构造函数B()的第一行, 发现没有调用this()和super(), 就自动在第一行补齐了super() , 完成了对父类对象的初始化, 然后返回子类的构造函数继续执行, 当运行到构造函数B()的"this(2) ;"时, 调用B类对象的B(int) 构造函数, 在B(int)中, 还会对父类对象再次初始化! 这就造成了对资源的浪费, 当然也有可能造成某些意想不到的结果, 不管怎样, 总之是不合理的, 所以this() 不能出现在除第一行以外的其他行!

3、使用this的情况

(1)形式参数名与类数据成员名重名时;

(2)方法的局部变量名与类的变量同名时;

(3)在一个构造方法中,调用类的另一个构造方法时,也就是表示当前对象。

Java10-java语法基础(九)——java的封装性的更多相关文章

  1. Java语言基础(九)

    Java语言基础(九) 一.自增运算(++) 自减运算(--) i++ 就是将i+1再赋给 i i-- 是将i-1再赋给 i 对变量i,j来说,i++ 或++i 这里没什么区别,都是将i的值加1后,再 ...

  2. Java语法基础(1)

    Java语法基础(1) 1.      Java是一门跨平台(也就是跨操作系统)语言,其跨平台的本质是借助java虚拟机 (也就是JVM(java virtual mechinal))进行跨平台使用. ...

  3. java语法基础(三)

    类和对象 面向对象语言概述 java是一种面向对象的语言,什么是面向对象的语言? 要搞清楚什么是面向对象语言,我们需要相对的了解一下面向过程的语言. java入门阶段,我们又给大家说过一些语言的分类, ...

  4. JAVA语法基础作业——动手动脑以及课后实验性问题 (八)

    一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...

  5. Java语法基础学习DayTwentyOne(网络编程)

    一.IP地址和端口号 1.作用 通过IP地址,唯一的定位互联网上一台主机. 端口号标识正在计算机上运行的进程,不同进程有不同的端口号,被规定为一个16位的整数0~65535,其中0~1023被预先定义 ...

  6. Java语法基础学习DayEighteen(常用类)

    一.String类 1.特点 String代表不可变的字符序列,底层用char[]存放. String是final的. 2.内存解析 3.常用方法 int length() char charAt(i ...

  7. Java语法基础DayFive

    一.继承 1.格式:class 子类 extends 父类 2.好处:提高代码的复用性:让类与类之间产生了关系,是多态的前提. 3.弊端: (1)类的耦合性增强了,而开发的原则是高内聚,低耦合.内聚是 ...

  8. java第二节课 java语法基础动手动脑

    动手动脑1:枚举变量   运行EnumTest.java package test2; public class EnumTest {  public static void main(String[ ...

  9. Java连载37-面向对象的封装性

    一.IDE上继续新建工程 1.在src目录下新建软件包:package机制后面再讲,目前先用着 2.给package命名一个名称:com.bjpowernode.java_learning 3.软件包 ...

  10. Java语言基础及java核心

    一.Java语言特点 1. 简单 2. 面向对象 3. 分布式 4. 健壮 5. 安全 6. 中性架构跨平台 7. 超强的可移植性 8. 高性能 9. 多线程 二.java的环境变量 JAVA_HOM ...

随机推荐

  1. 尚硅谷springboot学习20-web开发简介

    使用SpringBoot 1).创建SpringBoot应用,添加我们需要的模块: 2).SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来 3).自己编写业 ...

  2. python语言中的数据类型之集合

    数据类型 集合类型    set 用途:1.关系运算        2.去重 定义方式:在{}内用逗号分隔开多个元素,但元素的特点是 1.集合内元素必须是不可变类型 2.集合内元素无序 集合内元素不能 ...

  3. 在page cache中的页,如果当时没有进程read或者write,引用计数到底该为多少

    在一次偶然的机会,在研究如何降低pagecache占用的过程中,走查了 invalidate_mapping_pages的代码: 通过调用 __pagevec_lookup 在radix树中收集一部分 ...

  4. php运行代码流程和性能优化方法

    ---恢复内容开始--- php文件->扫描->zd引擎去理解->opcodes->执行->输出 例子,用white随机循环20000数据进行性能测试,分别对比isset ...

  5. RabbitMQ系列教程之四:路由(Routing)(转载)

    RabbitMQ系列教程之四:路由(Routing) (使用Net客户端) 在上一个教程中,我们构建了一个简单的日志系统,我们能够向许多消息接受者广播发送日志消息. 在本教程中,我们将为其添加一项功能 ...

  6. Linux sort命令使用方法

    sort命令在Linux中主要用于对文件进行排序,并将排序结果输出.sort命令输入可以是指定的文件和数据流.本文主要介绍sort命令的基本语法和常见使用实例. sort命令语法 sort命令格式:s ...

  7. ArcGIS 栅格数据教程

    ArcGIS 栅格数据教程 全部8个教程,带详细操作步骤和原始数据. 技术咨询:谢老师,135_4855_4328,xiexiaokui#139.com ArcGIS 10.5 此教程中的练习将使用样 ...

  8. spring boot 集成Thymeleaf

                                           

  9. Oracle 连接数据库

    使用的DLL:Oracle.ManagedDataAccess Bug:OracleInternal.Common.ProviderConfig的类型初始值设定项引发异常 App.config的更改才 ...

  10. hdu1002-A + B Problem II-(java大数)

    A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...