面向对象内存的分析:

一:内存的分类

1:栈(tack)

2:堆(heop) 

3: 静态区

4:代码区

二:引用数据类型内存特点

三:引用数据类型传值的特点

四:引用数据类型在作为参数时的特点

面向对象的基础

一:三大特征

1:封装(抽象)(封装就是定义一个类,然后给该类的属性和方法加上访问控制修饰符 public private..)

2:继承

2.1:父类(基类 超类)

2.2:子类

2.2.1:子类在同一个包下,可以访问父类除了私有private修饰的所有属性和方法

2.2.2:在不同包下,子类只能访问public修饰的属性和方法

2.2.3:子类内部,不同包情况下,可以访问protected修饰的属性和方法,但是不能访问默认的修饰符修饰的属性和方法

2.2.4:子类在初始化时,会先调用父类默认不带参数的构造器,如果没有报错,只有修改

1.将父类添加一个无参数的构造器
                             2.子类构造器中手动使用 super() 声明调用哪个父类的构造器

       2.3: extends

3:多态(运行时加载)

3.1:继承

3.2:重写

3.3:父类引用指向子类对象

二:类(简单理解就仅仅只是一个模板)

1:成员变量,全局变量,属性 (当对象初始化之后,成员变量就会有初始值

String null
                              整型 0
                            浮点型 0.0
                           boolean false
                            char (char)0)

2:行为,动作,函数,方法所有和动作相关的,都应该放入到方法中)

3:通过类创建对象(new)

三:对象

1:对象是类的实例

2:也具有属性和方法

3:对象都是属于某个类

4:一切皆对象

5:每一次(new)都会产生一个新的对象

四:重要的知识点和关键字

1:(this)

1.1:代表当前对象本身

1.2:有时候需要把当前调用对象进行传递,那么就可以使用(this)替代当前调用对象

1.3:在构造器中可以使用 this(参数)调用本类其他构造器

2:(super)

2.1:  指代父类

2.2:super()调用父类的构造器

2.3:super()如果放在子类中调用,只能放在子类构造器代码的第一行

2.4:使用super()点 可以在子类中调用父类中的方法

3:重载(是指一个类中具有相同的方法名称,但是参数列表不同)

4:重写(override)

  4.1:继承

  4.2:子类重写父类的方法

  4.3:方法名,参数类型,参数个数,返回值一样

  4.4:只是方法名一样,其他的有不一样,就是子类的重载

  4.5:注意 父类private修饰的方法,子类不能重写

  4.6:子类重写方法的访问修饰符可见度,必须比父类方法的访问修饰符可见度高或者一样

5:instanceof(判断某个对象是否是某个类型)

6:对象转型

  6.1:转型条件

    6.1.1:有继承关系

    6.1.2:有互相引用

    6.1.3:要把父类转型为子类,父类型必须包含子类型

  6.2:上转型

  6.3:下转型

7:(new)

  7.1:只要使用 new 关键字,就是创建一个新的对象

  7.2;要注意一个问题,不要觉得有时候参数需要一个对象,就直接 new 一个对象传过去

8:构造方法(构造器,构造函数)

9:访问修饰符

  9.1:public(公开的)

  9.2:private(私有的,只能在类的内部使用)

  9.3:protected(受保护的,在不同包下面的访问规则和public不一样,不同包不可以访问.在不同包下继承时,与friendly不同)

  9.4:friendly(默认的,在不同包下面的访问规则和public不一样,不同包不可以访问.)

  9.5:可见度(public>protected>friendly>private)

10:javabean

  10.1:所有属性都是private

  10.2:为每个属性建立setter和getter方法

  10.3:这个其实就是为了以后装数据用的一个类

11:final

  11.1:常量不能进行自增和自减

  11.2:final修饰类不能被继承

  11.3:final修饰方法不能被重写

12:static

  12.1:静态的属性和方法属于整个类

  12.2:静态的值只有一个(基本数据类型可以看出此特点)

  12.3:静态的值只会初始化一次(引用数据类型)

  12.4:静态属性方法或静态块会在JVM加载的时候就加载了

  12.5:一般情况静态的常量属性,我们一般书写为 public static final 数据类型 大写常量名=值

13:类和类的关系

  13.1:组合(紧密has-a,一个类是另一个类的属性)

  13.2:依赖(use-a 一个类是另外一个类方法的参数)

14:object(所有类的父类)

15:抽象类

  15.1:abstract

  15.2:抽象类不可以用new关键字实例化,实例化一个抽象类没有任何意义、

  15.3:抽象类不能实例化但是有构造器

  15.4:抽象类和抽象方法,必须被abstract修饰

  15.5:如果要用抽象类,可以使用多态

  15.6:抽象类是用来被继承的,抽象方法就是用来实现的,实现多态

16:抽象方法

  16.1:抽象方法一定在抽象类中

  16.2:不能被private修饰

  16.3:不能被static修饰

  16.4:没有{ }

  16.5:子类必须实现抽象方法

17:接口(interface)

  17.1:implements

  17.2:接口中的变量全是静态变量

  17.3:接口中的方法默认是公开抽象(public abstract),就算不写,也会自动加上

  17.4:jdk 1.8 以后可以手动声明默认方法和静态方法

  17.5:接口可以多实现,一个类可以实现多个接口

  17.6:接口与接口之间使用extends

  17.7:一个子类可以继承一个父类,实现多个接口

  18.8:接口没有构造器

JAVA基础面向对象分析的更多相关文章

  1. java基础面向对象之类与对象

    java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...

  2. Java基础-面向对象第一特性之封装(Encapsulation)

    Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...

  3. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  4. Java基础-面向对象第三大特性之多态(polymorphism )

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  5. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  6. JAVA(一)JAVA基础/面向对象基础/高级面向对象

    成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...

  7. Java基础——面向对象

    Hello 大家好,我又来啦,今天我们来说说Java的面向对象. 还记得之前去面试几家公司的实习生职位,大部分面试官都问过我有关面向对象 的问题,不知道以后还会不会问,估计是不会了吧...(:3[▓▓ ...

  8. 面试题-Java基础-面向对象

    1.面向对象软件开发的优点有哪些? 代码开发模块化,更易维护和修改.代码复用.增强代码的可靠性和灵活性.增加代码的可理解性.面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会 ...

  9. Java 基础 面向对象和抽象类

    面向对象变量 局部变量和成员变量区别 区别一:定义的位置不同 定义在类中的变量是成员变量 定义在方法中或者{}语句里面的变量是局部变量 区别二:在内存中的位置不同 成员变量存储在对内存的对象中 局部变 ...

随机推荐

  1. STM32Cube IDE 汉字字体变小解决办法

    用STM32Cube IDE自动生成的工程,如果用汉字注释的话,字体会变小,如下图: 解决方法:选中变小的汉字->右击选择Preferences,如下图: 在弹出的对话框中可以看出默认的字体是C ...

  2. vue3之组件

    目录 组件 根组件 局部组件 全局组件 组件的注册 组件名 组件名大小写 全局注册 局部注册 模块系统 组件注册实例: 组件化 组件间数据的传递 父组件传递数据给子组件 父组件传递数据给子组件例子 子 ...

  3. 【NOIP2016提高A组五校联考1】排队

    题目 分析 首先预处理出每个点的优先级,当有一个人进入时,一定会走到优先级最大的空房间中. 把所有空的房间扔到一个堆中,按优先级大小维护这个堆. 答案怎么求就不说了,很容易想到,就只讲操作吧. 对于第 ...

  4. try-catch-finally try中有rerun 是否执行finally

    finally块的语句在try或catch中的return语句执行之后返回之前执行且finally里的修改语句可能影响也可能不影响try或catch中 return已经确定的返回值,若finally里 ...

  5. linux-ntp-10

    Unix/linux类:ntp.aliyun.com,ntp1-7.aliyun.com windows类: time.pool.aliyun.com s1a.time.edu.cn 北京邮电大学 s ...

  6. SpringBoot搭建基于Apache Shiro的权限管理功能

    Shiro 是什么 Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户“登录”: 授权 - 访问控制: 密码加密 ...

  7. MYSQL安装失败,一打开就出现MySQL-Workbench已停止工作

    1.由于系统重新安装,环境都是新的,出现MySQL-Workbench已停止工作 解决:下载  微软常用运行库合集  安装即可

  8. 【模板】【数论】二次剩余Cipolla算法,离散对数BSGS 算法

    Cipolla LL ksm(LL k,LL n) { LL s=1; for(;n;n>>=1,k=k*k%mo) if(n&1) s=s*k%mo; return s; } n ...

  9. Selenium 定位一组元素

    到目前为止,我们已经知道了怎么去定位一个元素,有时候我们需要获取页面上的多个元素,该怎么办呢?难道还一个一个地去定位,那也太lower了吧. webdriver提供了定位一组元素的方法,跟前面讲的那八 ...

  10. VMware NAT模式下,公司代理下上网 续

    这是在非公司环境下,VMware NAT 静态IP模式下上网 由于公司的限制,可能需要通过proxy上网. 下面是我在公司的配置(参考其他) 1. 修改 /etc/environment http_p ...