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. COGS 723. [SDOI2007] 超级数组

    ★★☆   输入文件:arr.in   输出文件:arr.out   简单对比 时间限制:1 s   内存限制:3 MB  Source: SDOI2007 Day2[问题描述] 一般的数组大家都经常 ...

  2. Quick Launcher FAQ

    Q: Which category can be previewed and selected in Finder? A: All the categories can be selected in ...

  3. [BZOJ1576]安全路经Travel

    题目大意:从1号点出发,到每个点的最短路的最后一条边不能被访问,求此时1号点到其他点的最短路 建立最短路树,对于一条非树边,把它加进去会形成一个环和一条链,如图: 即红色和蓝色路径构成的图,它的长度为 ...

  4. poj_2528 Mayor's posters (线段树经典题+离散化方法)

    由于题面中给定的wall最大长度为10 000 000:若简单用线段树势必会超时. 而注意到题面中规定了输入海报的个数<=1000:因此不妨离散化,使得线段中叶节点仅含有1000个,那么线段最大 ...

  5. docker-machine windows

    windows 官方使用 https://docs.docker.com/machine/drivers/hyper-v/ 坑点是  docker-machine create -d hyperv m ...

  6. nodejs中mysql断线重连

    之前写了个小程序Node News,用到了MySQL数据库,在本地测试均没神马问题.放上服务器运行一段时间后,偶然发现打开页面的时候页面一直处于等待状态,直到Nginx返回超时错误.于是上服务器检查了 ...

  7. HtmlAgilityPach基本使用方法

    //过滤html标签 static void InnerText() { HtmlWeb htmlWeb = new HtmlWeb(); HtmlDocument doc = htmlWeb.Loa ...

  8. 尽量不要使用using namespace std

    C++标准程序库中的所有标识符都被定义于一个名为std的namespace中. namespace是指标识符的各种可见范围.命名空间用关键字namespace 来定义.命名空间是C++的一种机制,用来 ...

  9. [spring]<context:property-placeholder/>

    问题: 有些参数在某些阶段中是常量,这些参数在不同阶段之间又往往需要改变,如: 在开发阶段我们连接数据库时的url,username,password等信息 分布式应用中client端的server地 ...

  10. JSP 表达式语言

    JSP 表达式语言 JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单.JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式.在JSP EL表达式内可以使用整型数,浮点 ...