JAVA基础面向对象分析
面向对象内存的分析:
一:内存的分类
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基础面向对象分析的更多相关文章
- java基础面向对象之类与对象
java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...
- Java基础-面向对象第一特性之封装(Encapsulation)
Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...
- 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点
前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...
- Java基础-面向对象第三大特性之多态(polymorphism)
Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...
- Java基础-面向对象第二特征之继承(Inheritance)
Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...
- JAVA(一)JAVA基础/面向对象基础/高级面向对象
成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...
- Java基础——面向对象
Hello 大家好,我又来啦,今天我们来说说Java的面向对象. 还记得之前去面试几家公司的实习生职位,大部分面试官都问过我有关面向对象 的问题,不知道以后还会不会问,估计是不会了吧...(:3[▓▓ ...
- 面试题-Java基础-面向对象
1.面向对象软件开发的优点有哪些? 代码开发模块化,更易维护和修改.代码复用.增强代码的可靠性和灵活性.增加代码的可理解性.面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会 ...
- Java 基础 面向对象和抽象类
面向对象变量 局部变量和成员变量区别 区别一:定义的位置不同 定义在类中的变量是成员变量 定义在方法中或者{}语句里面的变量是局部变量 区别二:在内存中的位置不同 成员变量存储在对内存的对象中 局部变 ...
随机推荐
- 脚本.sh
一:什么是脚本 shell文件,是跑在linux中的命令集合 #!/bin/sh 必须在文件的第一行 符号#! 用来告诉系统它后面的参y数是用来执行该文件的程序
- ESP8266WiFiGeneric---通用库--事件和配置
ESP8266WiFiSTAClass .ESP8266WiFiScanClass .ESP8266WiFiAPClass 可以访问 ESP8266WiFiGenericClass的private和p ...
- 便捷删除QQ空间说说
用Chrome打开QQ空间说说(心情),按F12,在Console里面粘贴以下代码,按回车 var delay = 1000; function del() { document.querySelec ...
- 【NOIP2014模拟11.3】蛋糕
题目 今天是Bessie的生日,他买了一个蛋糕和朋友们一起分享,蛋糕可以看成是一个R行C列的表格,共有R*C个格子,每个格子都有一个0至9的数字,表示该格子蛋糕拥有的巧克力.现在Bessie要把蛋糕横 ...
- Linux缺少动态连接库.so--cannot open shared object file: No such file or directory
1 Liunx安装报错时,缺少动态链接库时,形式如下: /usr/local/libexec/gcc/x86_64-unknown-liunx-gnu/4.8.2/cc1: error while l ...
- C# WPF开机自启动和只允许一个程序运行
本文出自:https://www.cnblogs.com/2186009311CFF/p/10024949.html 在App.xaml.cs填充一下内容,即可实现只允许一个运行,且不解锁屏幕的情况下 ...
- JPA学习(一、JPA_Hello World)
框架学习之JPA(一) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 ...
- win7如何设置以管理员身份运行
一.对所有程序以管理员身份运行 1.右键单击桌面“计算机”,选择“管理” 2.在页面左侧,依此打开“计算机管理(本地)→ 系统工具→本地用户和组→用户”,在右侧找到“Administrator”,双击 ...
- 【Leetcode】最长回文子串
启发 1)做题前一定要读懂题目 在本题中,首先要清楚地定义回文子串的概念,然后才能设计算法查找它. 如中心扩散法,其主要思想在于找到一个回文子串的定义——两侧互为镜像.进一步分为奇数长度和偶数长度进行 ...
- Egret Tween
最近开始接触Egret,其实也就是为了写一些小的特效 1.egret.Tween.get() ,激活一个对象,对其添加 Tween 动画 2.to() ,将指定对象的属性修改为指定值 egret.Tw ...