java面向对象思想2
1.主函数是一类特殊的函数,作为程序入口,可被虚拟机调用。主函数格式是固定的。
public:函数访问权限最大。
static:代表函数随着类的加载已经存在。
void:主函数没有具体返回值。
main:不是关键字,是一个特殊的单词,可被虚拟机识别。
(String[] arr):函数的参数,字符串元素的数组。arr可以改变。
虚拟机在调用主函数时,传入的是new String[0];没有元素。调用为:类.方法名();
3.什么时候使用静态?静态随着类的加载而加载。
使用静态变量:对象中有共享数据时。该数据被静态修饰。特有数据被定义非静态存在堆内存中。
使用静态函数:【当功能内部没有访问到非静态数据(对象的特有数据),该功能可定义为静态的】
例如:public void show(){System.out.print("ok")};}可加static
4.静态的应用(工具类)
每一个应用程序都有共性的功能,可以将这些功能进行抽取,独立封装。
如果一个类中没有特有的数据,只有一些指定的方法,那么可以将该类的方法静态化。并且可以将构造私有化
使新建的对象只能通过类名访问,那么可以节省堆内存中的空间。
5.静态代码块:
static{
静态代码块执行的语句。
}
随着类的加载而【执行】,只执行一次。并优先于主函数、构造函数执行。
用于给类进行初始化。构造代码块给对象初始化。构造函数给对应对象初始化。
构造代码块:
{
构造代码块语句。
}
6.person p=new person();栈内存中main函数有 p(地址)
执行顺序:①加载person.class(类)文件加载到内存->②静态代码块执行(如果有的话)->③堆内存中空间开辟,分配地址
->④在堆内存中建立对象的特有属性,并进行默认初始化->⑤对属性进行显示初始化->⑥对对象进行构造代码块初始化。
->⑦对对象进行相应的构造函数初始化⑧将内存地址付给栈内存中的p变量。
7.非静态省略的【this.】静态省略的【类名.】
静态不访问堆内存(对象非静态)
构造函数指向堆内存中,方法存放在方法区。
8.设计模式:偏思想(解决一类问题最有效方法)
单例设计模式:解决一个类在内存中只存在一个对象。
单例设计模式2:饿汉式,懒汉式。
9.面向对象:继承,子继承父。 子extends父。
【this.本类】【super.父类】
继承:提高代码复用性,类与类产生关系多态性。
tips:必须是类与类之间有所属关系才可以继承。所属关系(is...a)
如果父类中内容子类不应该继承,那么不继承。
java中只支持单继承,不支持多继承。(一个类只能继承另一个类)
多继承带来隐患:当多个父类中定义相同功能,功能内容不相同时,会错误。
java支持多层继承(b extends a;c extends b)
使用继承体系中功能:查阅父类功能,创建子类对象使用功能。
【变量:出现非私有同名变量,用本类时加this。用父类加super。
【函数:子类出现和父类一样的函数,子类对象调用该函数,会运行子类函数的内容,如同父类函数被覆盖一样。这种情况是函数的另一个特性;重写
10.聚集: has a(子中有父)
聚合:
11.final:
1.可以修饰类,函数,变量。
2.被final修饰的类不可以继承。
3.被final修饰的方法不可以被复写,也不可以被继承
4.被final修饰的变量只能赋值一次,既可以修饰成员变量,又能修饰局部变量。加上final修饰规范为所有字母大写,多个单词组成,单词间通过_连接。
5.内部类定义在类中的局部位置时,只能访问被final修饰的局部变量。
12.抽象类:当多个类中出现相同的功能,但功能主体不同,向上抽取,只定义功能,不抽取功能主体。
1.抽象方法在抽象类中。
2.抽象方法和抽象类必须被abstract关键字修饰。
3.抽象类不可以用new创建对象,调用抽象方法没意义。
4.抽象类中方法被使用,必须由子类复写所有的抽象方法后,建立子类对象调用,【如果子类只覆盖部分抽象方法,那么子类是抽象类】
13.面向对象 接口:(like...a...)
接口:可以理解为一个特殊的抽象类。当抽象类方法都是抽象的,那么该类可以通过接口的形式来表示。
【①接口不可以创建对象,因为有抽象方法。需要被子类实现。②子类对接口中抽象方法全覆盖后,子类才可以实例化。否则子类是一个抽象类。】
③接口中都是静态常量④接口可以被类 多实现(类与接口之间是实现关系),是对多继承不支持转换形式。】
class 用于定义类。 interface 用于定义接口。
接口格式特点:
1.接口常见定义:常量(final),抽象方法
2.接口中成员有固定修饰符,成员都是public。
常量:public static final.
方法:public abstract.
14.接口中继承改为实现(implements)
15.一个类可以继承一个类同时继承多接口(只有接口间存在多继承)。
特点:接口可以被类 多实现(类与接口之间是实现关系),是对多继承不支持转换形式。
接口与接口可以多继承。
接口对外暴露规则
接口是程序的功能扩展
接口可以用来多实现。
16.基本功能定义在类中,扩展功能定义在接口中
java面向对象思想2的更多相关文章
- 06-03 Java 面向对象思想概述、开发设计特征,类和对象的定义使用,对象内存图
面向对象思想概述.开发设计特征 1:面向对象思想 面向对象是基于面向过程的编程思想. 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一 ...
- JAVA面向对象思想理解分析
1.面向对象是面向过程而言.两者都是一种思想.面向过程:强调的是功能行为.(强调过程.动作)面向对象:将功能封装进对象,强调了具备了功能的对象.(强调对象.事物)面向对象是基于面向过程的.将复杂的事情 ...
- 薪资管理系统(Java面向对象思想)
package com.test3; import java.util.*; import java.io.*; /** * @author qingfeng * 重要思想:面向对象思想(添加员工管理 ...
- java面向对象思想1
1.面向对象是面向过程而言.两者都是一种思想.面向过程:强调的是功能行为.(强调过程.动作)面向对象:将功能封装进对象,强调了具备了功能的对象.(强调对象.事物)面向对象是基于面向过程的.将复杂的事情 ...
- Java面向对象思想解决猜拳问题
第一个面向对象的程序: 一个控制台猜拳小游戏: 第一步选择角色: 第二部选择剪刀,石头,布,与电脑进行PK: 第三部选择继续或者选择结束; 结束显示比赛的局数,以及各自赢得的分数: 设计思路 分析问题 ...
- java面向对象思想之封装
一.什么是封装 菜鸟教程对封装的解释是"在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装.隐藏起来的方法.".简单来说就 ...
- 《Head First Java》读书笔记(2) - Java面向对象思想
1.了解继承 对象继承实际上就是一种"is - a"的关系,如上图的"PantherMan is a SuperHero?",是,那么便属于继承的理解. 继承能 ...
- JAVA面向对象思想
1.面向对象的基本特征 面向对象具有三个基本特征:封装.多态.继承. 1)封装 封装指的是将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能. ...
- 浅谈Java面向对象思想
本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...
随机推荐
- 20165224 陆艺杰 Exp9 Web安全基础
Exp9 Web安全基础 SQL注入攻击原理,如何防御 程序对用户输入数据的合法性没有判断就直接插入查询语句 信任别人的输入,构造输入造成攻击 防御 :对输入进行检查 XSS攻击的原理,如何防御 程序 ...
- django--权限(1)初识
一.权限表结构设计 1.认识权限 生活中处处有权限,比如,腾讯视频开会员才有观看某个最新电影的权限,你有房间钥匙就有了进入这个房间的权限,等等.同样,程序开发过程中也有权限,我们今天说的权限指的是we ...
- 031 Next Permutation 下一个排列
实现获取下一个排列函数,这个算法需要将数字重新排列成字典序中数字更大的排列.如果不存在更大的排列,则重新将数字排列成最小的排列(即升序排列).修改必须是原地的,不开辟额外的内存空间.这是一些例子,输入 ...
- Linux Bash 命令行快捷键小结
编辑命令 光标移动 剪切.删除 Ctrl ...
- Python3基础(2)模块、数据类型及运算、进制、列表、元组、字符串操作、字典
---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...
- C++中的swap函数
最通用的模板交换函数模式:创建临时对象,调用对象的赋值操作符 template <class T> void swap ( T& a, T& b ) { T c(a); a ...
- SpringBoot | 第十五章:基于Postman的RESTful接口测试
前言 从上一章节开始,接下来的几个章节会讲解一些开发过程中配套工具的使用.俗话说的好,工欲善其事,必先利其器.对于开发人员而言,有个好用的工具,也是一件事半功倍的事,而且开发起来也很爽,效率也会提升很 ...
- java 从List<Integer> 中随机获取6个数
List<Integer> list 为不重复的数字集合,例如:1,2,3,4,5,6,7,8,9,10 从中随机获取不重复的6个数.代码如下. List<Integer> l ...
- SpringMVC03 ParameterMethodNameResolver(参数方法名称解析器) And XmlViewResolver(视图解析器)
参数方法名称解析器 1.配置依赖包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...
- Java并发基础:线程的创建
线程的创建和管理: 1.应用Thread类显式创建.管理线程 2.应用Executor创建并管理线程. 定义任务: 无返回的任务:实现Runnable接口并编写run()方法. 有响应的任务:实现Ca ...