面向对象内存的分析:

一:内存的分类

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. 最全的WEB前端开发程序员学习清单

    史上最全的WEB前端开发程序员学习清单! 今天为什么要给大家分享这篇文章呢,我发现最近来学前端的特别多,群里面整天都有人问:前端好找工作吗?前端要怎么学啊?前端工资怎么样?前端XX,前端XXX,虽然我 ...

  2. 12.python csv文件写入和读出

    import csv headers = ["class", "name", "sex", "height", &quo ...

  3. winform 皮肤

    winform  皮肤 https://github.com/kwonganding/winform.controls

  4. JavaScript的几种循环使用方式及性能解析

    循环的类型 一:for var arr = [1, 2, 3, 4, 5, 6]; for (var i = 0, len = arr.length; i < len; i++) { conso ...

  5. BZOJ 4773: 负环 倍增Floyd

    现在看来这道题就非常好理解了. 可以将问题转化为求两点间经过 $k$ 个点的路径最小值,然后枚举剩余的那一个点即可. #include <cstdio> #include <cstr ...

  6. 记ubuntu sudo无法使用,su密码不对的解决办法

    前言 因为我有强制关机的习惯, 然后就杯具了.. ubuntu版本是 16.04 sudo没法使用, su密码不对, 顿时我就慌了 解决方案 1.1.开机点击ESC,进去GUN GRUB界面 1.2. ...

  7. 人脸三维建模A Morphable Model For The Synthesis Of 3D Faces(三维人脸合成的变形模型)

    Abstract摘要 In this paper, a new technique for modeling textured 3D faces is introduced. 3D faces can ...

  8. 【canvas学习笔记三】样式和颜色

    上一节我们学习了如何用路径绘制各种形状,但我们只能用默认的颜色和线条.这节就来学习设置不同的颜色和线条样式. 颜色 设置颜色主要有两个属性: fillStyle = color 设置填充颜色 stro ...

  9. jconsole性能监控

    1.进入tomcat bin目录 vim catalina.sh #!/bin/sh下面加入: #!/bin/shJAVA_OPTS="-Dcom.sun.management.jmxrem ...

  10. MVC Areas的使用

    在网上查了一些资料 关于这个写的都很简单,没得实际应用. 参考了一下别人的代码,写篇博文记录一下. 首先目录结构: 然后主要是 BaseAreaRegistration 文件内容 public cla ...