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.抽象类不能被直接实例化,要通过其子类进行实例化