1、【封装】:将对象的状态信息隐藏,不允许直接访问,而是通过该类提供的的方法阿里实现内部信息的访问和操作。

使用到的修饰符:private,不用修饰符(default),protected,public,

private:当前类访问权限,适合把属性隐藏在类的内部,只能通过方法访问。(一般用来隐藏)

default:包访问权限,只要自己所属的这包下的其他类都能访问。

protected:子类访问权限,可以相同包,或者不同包访问。一般用于子类重写。

public:公共属性,任何类都可以访问。(一般用来暴露)

注:由此可以解释为什么局部变量不用修饰符?因为其局部变量的作用域已经定了,就在方法,或者代码块内,所以不需要额外的修饰符限定其作用域。

封装方法:用setter _ _ getter方法进行隐藏的属性的访问。

用法事列:private String name;//定义一个隐藏的属性

public String getName()//语法为:【修饰符】数据类型 get[封装的属性名第一个字母大写]
{
return name;                                【返回值和上面的数据类型一样】
}
public void setNmame(String name)【注意】:这是设置进去,不需要返回值
{
this.name=name;
}

2、【包】:引入包提供了类的多层命名空间,用于解决类的命名冲突,类文件管理等问题,【一般公司自己的包名多为公司域名的倒写】

包名:全部为小写字母;

语法:package 【包名】

【注】:1、一个源文件只能指定一个包,同一个包下的类可以自由访问。

2、当没有用import导入相应的包的时候,在父包中使用子包的类必须使用子包的全名,导入了包之后可以直接使用。

3、import   java.util.*;这个表示导入util这个包下面的所有类,*号是通配符。

4、import   static package.packagename.classname;这个是导入这个包的相应的类下面的静态属性。

5、自己定义包时,使用javac   -d  源程序这个代码来编译时,-d的意思是系统会自动为package生成文件夹,并把生成的类放置在其下,当执行时会自动寻找,当然,子包作为子文件夹。

3、【继承】:子类通过继承得到父类的全部【属性】和【方法】,【但不能获得父类的构造器】。

语法:【修饰符】 class 【子类】extends 【父类】

{//代码块

}

【注】:1、一个类只能有一个直接父类,可有无数个间接父类。【单继承】

2、其实继承就是从一般到特殊的的情况,即:“is a”;如:apple is a fruit。

3、一切的类都是object类的子类。也即:如果定义的类没有用extends显式继承某个类的话,那么就会默认继承object类。

4、重写父类方法:a、方法名,形参列表都相同。

b、子类重写的方法的访问权限必须比父类的访问权限更大,或者相等。

c、子类重写方法的返回值类型必须比父类中方法的返回值类型更小,或者相等。

【注】:1、重写也叫覆盖,就是子类重写父类的方法后,会覆盖(屏蔽)了父类的方法,当其需要调用的时候用super(参数)【利用参数的不同,找不同的方法】,【但是如果父类方法有private修饰,则无法调用或者重写】。

2、子类的构造器总会默认的调用父类的构造器一次,相当于是要把父类的相关属性和方法加载到子类上。

3、加上@override:防止重写父类方法是出错,编译期给出严格的检查,如果不这样,那么只有运行的时候才能抛出异常。

【相近名字直接的区别】

a、重载:同一个类的不同方法之间,通过不同的参数定义相同参数名的不同方法的途径。

重写:发生在子类和父类之间的。

b、this:发生的调用发生在一个类里面。

super:发生在子类和父类之间,子类通过此关键字调用父类的初始化代码,属性,或者方法。

【注】:由于this和super都只能放在方法的第一行,所以不可能同时出现。

5、多态:java的变量在整个使用的过程中可能会有两个类型,编译时时对应的编译类型,而运行时便由实际赋予的值决定其变量。

编译时类型:由声明它的变量决定。

运行时类型:由实际指向(实际赋予)的类型决定。

6、关键字:【引用类型变量】instanceof 【类,或者接口】判断前面的对象是否是后面类的实例,如果是返回值为true,如果不是返回值为false。

【注】:1、其操作数的类型,要么与后面的类相同,要么与后面类有继承关系,否则会引起编译错误。

2、通常先用instance判断一个对象是否可以强制类型转换,然后再强制类型转换,从而保证程序的正确性。

7、初始化代码块:对一个类或者一个实例进行初始化。

语法:【修饰】  {初始化代码块}  ;注:修饰符只能是static,或者可以省略。

特点:没有名字,所以不能被引用,只要创建对象时就会被隐式的执行。

有无static 的区别:有static是类初始化块,当类加载的时候对类进行初始化,隐式执行(自动执行)。没有static则会在对类创建实例的时候自动执行。

何时执行:static修饰的是类一加载就执行,而没有static的是当创建实例时(执行顺序由代码块和构造器的位置决定),若初始化代码块在构造器前面则先执行,再执行构造器里的代码块,反之则先执行构造器里的代码再执行初始化代码块。

java入门学习(6)—封装,继承,多态,this,super,初始代码块的更多相关文章

  1. Java入门教程九(封装继承多态)

    封装 封装就是将对象的属性和方法相结合,通过方法将对象的属性和实现细节保护起来,实现对象的属性隐藏.做法就是:修改属性的可见性来限制对属性的访问,并为每个属性创建一对取值(getter)方法和赋值(s ...

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

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

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

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

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

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

  5. Java三大特征:封装 继承 多态

    内部类:成员内部类.静态内部类.方法内部类.匿名内部类. 内部类:定义在另外一个类里面的类,与之对应,包含内部类的外部类被称为外部类. 内部类的作用:(1)内部类提供了更好的封装,可以把内部类隐藏在外 ...

  6. C++学习笔记 封装 继承 多态 重写 重载 重定义

    C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...

  7. Java基础之理解封装,继承,多态三大特性

    目录 封装 继承 多态 封装 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 代码理解 publ ...

  8. 浅谈学习C++时用到的【封装继承多态】三个概念

    封装继承多态这三个概念不是C++特有的,而是所有OOP具有的特性. 由于C++语言支持这三个特性,所以学习C++时不可避免的要理解这些概念. 而在大部分C++教材中这些概念是作为铺垫,接下来就花大部分 ...

  9. java面向对象(封装-继承-多态)

    框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...

  10. Java三大特性(封装,继承,多态)

    Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...

随机推荐

  1. params

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Ch06 ...

  2. MysQL使用一查询

    简介 查询的基本语法 select * from 表名; from关键字后面写表名,表示数据来源于是这张表 select后面写表中的列名,如果是*表示在结果中显示表中所有列 在select后面的列名部 ...

  3. 1568: [JSOI2008]Blue Mary开公司

    1568: [JSOI2008]Blue Mary开公司 题目描述 传送门 题目分析 简单分析可以发现就是不停给出了\(n\)条直线,要求每次给出一条直线后求出所有直线在横坐标为\(x\)时\(y\) ...

  4. java 连接 redis集群时报错:Could not get a resource from the pool

    由于弄这个的时候浪费了太多的时间,所以才记录下这个错,给大伙参考下 检查了一下,配置啥的都没问题的,但在redis集群机器上就可以,错误如下: Exception in thread "ma ...

  5. 网络流learning

    上次学习网络流还是大一的下学期,之后就被从图论分出来交给队友了 然而吉林一战,队友在深圳读研而不能来,于是需要自己学习一下,争取在比赛前看完网络流建模汇总和一些总结,升华一下. 同时记录一下自己做过的 ...

  6. spring boot 知识点1

    spring boot: 1. 可以在pom文件中添加依赖sping-boot-properties-migrator来对项目进行升级,升级完成后,删除即可. 2. 关于日志的配置,参考:http:/ ...

  7. cocos2d-x入门二 helloworld实例运行与创建

    本机环境:win7+VS2012+python2.7.8+cocos2d-x-3.8,另外本机已经配置android开发环境(java+eclipse+SDK+ADT),针对环境搭建后续会有一篇详细说 ...

  8. vue的seo方案 prerender-seo-plugin

    利用vue cli 3.0安装脚手架.记住:勾选vue-router. 在vue.config.js里添加配置: 2, var path = require('path') 3, const Prer ...

  9. jmeter-02 JMeter 生成HTML性能报告

    Report Dashboard: JMeter3.0 后提供的扩展模块,支持从测试计划中获取图形和统计数据,生成HTML页面格式图形化报告. 快速入门演示 一.准备测试计划 mock_api .jm ...

  10. Emacs Helm: 使用关键字搜索、获取、执行任何东西

    Helm 是一个emacs的软件包,定义了一个通用框架,交互式地.动态缩减式地使用关键字选择.获取.执行任何东西.比如: 执行emacs 命令 打开文件 查看man文档 执行grep操作 执行apt命 ...