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. 【读书笔记】《深入浅出nodejs》第四章 异步编程

    1. 异步编程的基础 -- 函数式编程 (1)高阶函数 -- 是可以把函数作为参数,或是将函数作为返回值的函数. (2)偏函数用法 -- 创建一个调用另外一个部分 -- 参数或变量已经预置的函数 -- ...

  2. ASP.NET MVC 必备开发环境

    许多初学者为了搭建开发环境,很多软件找不齐,或者找不到的比较新而且稳定版本.所以我将下载和安装的资料整理了下,供大家下载.资料均收集于网络,但基本核实资料的可靠性,但不能完全保证.如果你在使用过程中发 ...

  3. Hive相关随笔

    1).Hive中Select Top N的实现 Hive中使用 Order by + Limit 可以很容易地实现Select Top N. 但是在Hive中Order by只能使用1个Reduce, ...

  4. linux字典生成工具crunch

    安装 tar zxvf crunch-3.6.tgz cd crunch-3.6 gcc -Wall -lm -pthread -std=c99 -m64 -D_LARGEFILE_SOURCE -D ...

  5. ubuntu如何释放内存

    答: step 1: 以最高权限同步所有的缓存到磁盘中 sync sync step2: 执行以下命令指示内核对内存进行调整 echo 3 > /proc/sys/vm/drop_caches ...

  6. 1970年1月1日(00:00:00 GMT)Unix 时间戳(Unix Timestamp)

    转载自(http://jm.ncxyol.com/post-88.html) 今天在看Python   API时,看到time模块: The epoch is the point where the ...

  7. UVA 1642 Magical GCD(经典gcd)

    题意:给你n(n<=100000)个正整数,求一个连续子序列使序列的所有元素的最大公约数与个数乘积最大 题解:我们知道一个原理就是对于n+1个数与n个数的最大公约数要么相等,要么减小并且减小至少 ...

  8. 修改主机hosts文件 访问外网

    参考:详解google Chrome浏览器(理论篇) 感谢原博主 Alan_beijing 的分享,博客:Alan_beijing hosts文件所在位置: a.Windows系统: C:\Windo ...

  9. windows组策略屏蔽

    点“IP安全策略,在本地机器”——>创建IP安全策略---->下一步---->名称随便写,如输入阻止,然后一直点下一步,出现提示点是,一直到完成,这个时候就创建了一个名为“阻止”的策 ...

  10. git开发错分支

    1,代码未提交时: 使用以下命令即可解决. git add .      (把所有改动暂存) git stash     (把暂存的文件提交到git的暂存栈) git checkout 本该提交代码的 ...