JAVA 面向对象的一些基础理解
方法的定义:方法就是一段可重复调用的代码段
格式:
访问修饰符 返回值类型(可以是void、基本数据类型、引用数据类型) 方法名(){
方法主体
}
注意:void返回值类型不需要返回值,而其他类型都需要有返回值。
方法的重载:方法名称相同,但是参数的类型和个数不同,通过传递参数的个数和类型来完成不同功能的操作。
类和对象的关系:类是对某一事物的描述,是抽象的、概念上的意义,对象是实际存在的该类事物的每一个个体,也被称为实例
类的声明格式:
class 类名称
{
属性
方法
}
类名 对象名=null//声明
对象名=new 类名()//实例化操作
类名 对象名=new 类名//声明并实例化
内存划分:
类名 对象名:是在栈内存开辟了一个空间
对象名指向对应的堆内存空间
new 类名():使用new开辟的堆内存空间
开辟的堆内存中的属性都是默认的值,例如:
String 的默认值是null int的是0等等;
经过对属性的赋值后堆内存中的值才会改变
在没有私有化属性和方法时可以使用:
对象.属性//赋值
对象.方法//调用
注意:如果没有进行new 类名()操作就会出现空指针异常:
Exception in thread "man" java.lang.NullPointerExcetion
面向对象基础了解:
程序的发展历程:面向过程、面向对象
什么是面向过程和面向对象:比如说要做一个盒子,面向过程是:不想去做一个什么样子的盒子,随机取工具来做。面向对象是:先想好要做一个什么样子的盒子,在找对应的工具来做
面向对象的三大特征:
1.封装性
对外部不可见
比如说电视:电视机有外壳,而外壳的作用就是为了保护电视机内部零件,而电视通常在外部留有按钮方便人们来使用,而程序也是这样会留下一些接口方便我们使用。
2.继承
扩展类的功能
例如:你父亲有1000W当你父亲老去了,他只有你一个儿子,他的财富积累过程就终结了,而你继承了你父亲的1000W,你的财富积累就会从1000W开始积累而且不会出现亏损的现象
3.多态性
方法的重载
对象的多态性
方法的递归调用:
1.方法递归调用是一种特殊的调用形式,就是方法自己调用自己
递归调用→方法(参数)
↗ N ↓ Y(递归调用的出口)
执行语句←———满足结束条件———→返回调用处
代码如下:
public class Demo{
public static void main(String[] args){
System.out.println(addNum(100));
}
public static int addNum(int n){
if(addNum==1){//对于本程序来说addNum==1就是程序出口
return 1;
}else{
return n+addNum(n-1)
}
}
封装性:
保护当前类的某些属性和方法不被外部类所看见
封装性的实现:
为属性和方法进行封装是通过关键字private进行声明的
实现该属性的set和get方法,为外部所访问
匿名对象:
匿名对象就是没有名字的对象,如果程序中只使用一次该对象,就可以使用匿名对象的方式
格式: new 类名.方法名()(注意:只适合使用一次的对象)
构造方法:
格式:
访问修饰符 类名称(){
程序语句
}
注意:1.构造方法名称与类名称相同
2.构造方法没有返回值类型
构造方法主要是为了类中的属性初始化
每个类实例化之后都会调用构造方法,如果没有构造方法,程序在编译的时候就会创建一个什么都不做的无参的构造方法
构造方法的重载:
方法名称相同,但是参数的类型和个数不同,通过传递参数的个数和类型来完成不同功能的操作。
引用传递:
this关键字:
1.表示类中的属性和调用方法
this.属性名(当前类中的属性) this.方法名(当前类的方法)
2.调用本类中的构造方法
this()(调用无参的构造方法,注意this()必须放在构造方法的首行)
3.表示当前对象
继承:
继承的基本概念:扩展父类的功能
例如:你父亲有1000W当你父亲老去了,他只有你一个儿子,他的财富积累过程就终结了,而你继承了你父亲的1000W,你的财富积累就会从1000W开始积累而且不会出现亏损的现象
JAVA中使用extends关键字完成继承
class 子类 extends 父类{}
JAVA中的继承限制:
1.只允许单继承
2.子类不能直接访问父类的私用成员,如果要调用只能通过get和set来调用
子类对象的实例化过程:
1.子类对象实例化之前必须要调用父类中的构造方法,之后调用子类的构造方法
↑→先调用父类的构造方法→调用父类构造
实例化子类对象
↓→在调用子类的构造方法→调用子类构造
JAVA中方法重写和super关键字:
1.在继承中,也存在着重写的概念,其实就是子类中定义了与父类中的同名的方法
2.定义:
方法名称相同,返回值类型相同,参数相同
3.重写限制:
被子类重写的方法不能拥有比父类方法更严格的访问权限
4.访问权限:
private<default<public其中,default是默认的
super关键字:
super强行调用父类中的方法
JAVA中重写与重载的区别:
重载(Overloading)定义:方法名称相同,参数的类型或个数不同对权限没有要求,范围是在同一个类中
重写(Overriding)定义:方法名称相同,返回值类型相同、参数的类型相同,
被重写的方法不能拥有比父类方法更严格的访问权限,范围是在继承类中
抽象类和接口
final关键字的使用
final在JAVA中被称为完结器,表示最终的意思
final能声明类、方法、属性
使用final声明的类不能被继承
使用final声明的方法不能被重写
使用final声明的变量被称为常量且不能被修改
抽象类
1.抽象类概念:
包类个抽象方法的类就是抽象类
2.抽象方法:
声明而未被实现的方法,抽象方法必须使用abstract关键字来声明
3.抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法
4.定义格式 abstract class className(){
属性
方法
抽象方法
}
5.抽象类不能被直接实例化,要通过其子类进行实例化
转载于:https://www.cnblogs.com/yckv/p/4808867.html
JAVA 面向对象的一些基础理解相关推荐
- Java 面向对象:static的理解
Java 面向对象:static的理解以及各个代码块的运行顺序 一.static关键字 static修饰方法--称为静态方法,可以直接通过类名调用 static修饰变量--称为静态变量,能被类中所有实 ...
- Java 面向对象:多态的理解
Java 面向对象:多态的理解 一.多态的定义 一个对象的实际类型是确定的,但可以指向引用对象的类型可以有很多(父类,有关系的类) 操作符的多态 +可以作为算数运算,也可以作为字符串连接 类的多态 父 ...
- Java 面向对象:重写的理解
Java 面向对象:重写的理解 一.重写的概念: 子类可以继承父类的对象方法 在继承后,重复提供该方法,就叫做方法的重写,又叫覆盖 override 二.实例: 1. 父类Mi10,提供SOC的打印方 ...
- Java面向对象三大特征的理解
面向对象三大特征的理解 初始理解 封装 继承 多态 初始理解 其实这些知识很早就有接触,而且一些概念也牢记于心了.自己叙述面向对象的特征会是这样的: 面向对象的三大特征是封装.继承和多态.封装是对代码 ...
- java面向对象编程思想的理解
1.我们总说java是一门面向对象编程的语言,那什么是面向对象呢? 我是这样理解的,对象是事物存在的实体,如,猪.狗,花早等都是对象,对象由两部分组成.面向对象编程的三大特点:继承,多态,类是封装对象 ...
- java 面向对象原则_Java基础:面向对象六大原则
本文主要介绍了面向对象六大原则. 单一职责原则(Single-Resposibility Principle). "对一个类而言,应该仅有一个引起它变化的原因."本原则是我们非常熟 ...
- Java 面向对象:接口的理解
接口的基础语法 一.接口怎么定义,语法是什么? public interface MyMath {double PI = 3.1415926;int sum(int a, int b);int sub ...
- Java 面向对象:继承的理解
继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模 1.extands的意思是"扩展".子类是父类的扩展 2.Java中类只有单继承,没有多继承! 3.继承是类和类之间的一 ...
- JAVA面向对象:相关基础知识(带包编译--权限修饰符--内部类)
目录 1.带包编译 2.权限修饰符 3.内部类 1.带包编译 解决使用notepad++ 等文本编辑器编写的java类中如果需要 package 的解决方案: 手动式:手动建包,.java文件放在包外 ...
最新文章
- 颠覆性技术的兴起及其影响
- 第9章 数据字典(选项)管理
- 头条+腾讯 双杀面经(NLP实习)
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1091:求阶乘的和
- 2018-2019-2 20165221 【网络对抗技术】-- Exp9 Web安全基础
- 客户端浏览器Chrome过早断开连接导致Nginx报400错误的解决办法
- DedeCMS V5.7模块MVC框架基本说明
- 如何避免量化交易策略模型过度拟合
- TVS防护电路的典型应用
- ARP报文头部格式和请求流程
- python3 解决除法中循环小数计算并判断循环体
- ngrinder启动项目时报错Error creating bean with name ‘emf‘ defined in org.ngrinder.infra.config.DatabaseConf
- Excel教程视频《Excel大神上分攻略》50个工作场景,从案例到实践
- 天津大学软件学院 研究生学位申请的学术成果要求
- 获取农历节日的公共方法
- 服务器网络适配器多路传送器协议,win8系统开启Microsoft网络适配器多路传送协议的具体方法...
- JavaScript循环语句的性能问题
- java开源线程池_线程池 - Java 并发性和多线程 - UDN开源文档
- react的props验证
- SQL如何从字符串截取指定字符(LEFT、MID、RIGHT三大函数)