Java面向对象 类,对象,抽象类,接口

面向对象

是什么

​ 类表示一类具有相同属性和行为的事物的抽象

​ 人:身高,体重,兴趣爱好,姓名,年龄。。。

​ 学生:学号,姓名,班级,课程。。。

为什么

​ java是面向对象语言,而创建对象就需要类。类是对象的抽象,对象是类的具体化。学生类,小明同学就是学生类的一个具体表现,即学生类的一个对象。小明,小刚都是学生,学生类就是小明同学,小刚等同学的抽象。

使用

public class 类名{

属性修饰符 属性类型 属性名;

修饰符 放回值类型/void无返回值 方法名(){
	}

}

注意:属性与行为根据需求定义

​ 类里面只能定义共有的属性或行为

​ 是否需要计算。 价格BigDecimal

对象

是什么

​ 类的实例化;

为什么

​ 类是抽象的,不能实现具体的业务逻辑,而对象是具体的

​ 例子:教师上课 要实现就是 张老师去上课

使用

//直接实例化

new 类名(); 

//添加引用实现

引用类型 对象名 = new 类名();

注意:每次new出来的对象都会创建新的内存地址,用来存放成员变量

单例 多例 堆栈图

​ 通过“==”比较内存地址

单例

多个引用指向同一个对象
在这里插入图片描述

多例

多个引用指向各自对象

在这里插入图片描述

this指向当前方法的调用者对象

方法

定义:

​ 表示某种行为 函数

	修饰符 返回值 方法名(参数){

		方法体

 }

​ 返回值为 void 方法体可以使用return 作为方法的终结

为什么

​ 实现具体功能 减少代码冗余 提高复用 ->好处:减少代码量和方便维护

构造方法

​ 为什么:在对象创建时就有属性值

​ new对象就是new 类的构造方法

​ 使用:

public 类名(属性类型 属性名){

	}

​ 默认情况下,如果类中没有构造方法,JVM会提供无参构造方法 ,当定义有参构造时,JVM不会提供无参构造,需要自己在类中定义

重载

​ 功能相似的方法,可以同名;

​ 调用的时候根据形参列表去调用具体哪个方法。

​ 重载规则:

  1. 方法名相同;
  2. 参数列表不同(个数,类型,顺序;
  3. 和返回值类型和权限无关

抽象类

​ 父类的功能不知道怎么定义,需要子类实现 -->父类声明为抽象类 方法为抽象方法

特征:

  1. 可以定义构造器,但是不能new对象,
  2. 只能子类继承,一个类只能继承一个抽象类
  3. 子类继承抽象类,重写抽象方法或者将方法继续声明为抽象
  4. 可以包含静态方法,不能抽象;不能被final修饰
  5. 抽象类中不一定有抽象方法,可有抽象方法和普通方法。
  6. 有抽象方法的类一定要为抽象类
  7. 成员变量修饰符可以是 private、默认、protected、public
  8. 可以定义成员变量

使用

public abstract class Pet{
	public abstract void eat();
}

接口

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

接口与类相似点:

  1. 一个接口可以有多个方法。
  2. 接口文件保存在 .java 结尾的文件中,文件名使用接口名。
  3. 接口的字节码文件保存在 .class 结尾的文件中。
  4. 接口相应的字节码文件必须在与包名称相匹配的目录结构中。

接口与类的区别:

  1. 接口不能用于实例化对象。
  2. 接口没有构造方法。
  3. 接口中所有的方法必须是抽象方法,Java 8 之后 接口中可以使用 default 关键字修饰的非抽象方法。
  4. 接口不能包含成员变量,除了 static 和 final 变量。
  5. 接口不是被类继承了,而是要被类实现。
  6. 接口支持多继承。

接口特性

  1. 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
  2. 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
  3. 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

抽象类和接口的区别

  1. 方法体:抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
  2. 成员变量:抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
  3. 静态:接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
  4. 继承:一个类只能继承一个抽象类,而一个类却可以实现多个接口。
  5. 构造器:接口中不可定义构造器,抽象类可以。
  6. 抽象方法:有抽象方法的类一定是抽象方法,抽象类未必要有抽象方法。接口中只有抽象方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值