java面向对象编程(2)普通类,抽象类,接口

3 篇文章 0 订阅
3 篇文章 0 订阅

一、类与对象

1.1 类的定义和实例化

1.1.1 类的修饰符

1) public:公共的
每一个.java文件只能有一个public修饰的类,并且类名和文件名称一致
**2)abstract:**抽象的
a. 使用这个修饰符之后,变为抽象类
b. 不能用abstract修饰变量、代码块、构造器;
c. 不能用abstract修饰私有方法、静态方法、final的方法、final的类
3)final:最终的
使用final修饰类,类不能被修改,即不能被继承,别名”太监类“

1.1.2 实例化

关键字:new
new 构造器(参数列表)来实例化对象
例如:

	Xxx xx=new Xxx();

1.2 抽象类 & 抽象方法

1.2.1 概述

抽象类:即使用abstract关键字修饰的类。

抽象方法:
1)即使用abstract关键字修饰的方法。
2)抽象方法没有方法体。

注意:
1)如果一个类中有抽象方法,那么该类应该定义为抽象类(接口中全为抽象方法)
2)抽象类不能被实例化。
3)抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。
4)若没有重写全部的抽象方法,仍为抽象类。

1.2.2 代码举例
	public abstract class Dome_abstract {
	//抽象类可以有构造方法
	public Dome_abstract() {
	}
	//抽象方法
	public abstract void method();
}
class A extends Dome_abstract{
	@Override
	public void method() {
		//继承之后需要重写,添加方法体,否则必须定义为抽象类
	}
}

1.3 接口

1.3.1 概念
  1. 为什么引入接口?
    在java里面是不支持多继承的,一个子类只能继承一个父类,这就产生了很大局限性;

  2. 接口是什么?
    接口就是规范,定义的是一组规则,体现了现实世界中“如果你是/要…则必须能…”的思想。
    继承是一个"是不是"的关系,而接口实现则是 "能不能"的关系。
    接口的本质是契约,标准,规范,就像我们的法律一样。制定好后大家都要遵守。

1.3.2 如何定义一个接口

接口(interface)是抽象方法和常量值定义的集合。
接口的特点:
用interface来定义。
接口中的所有成员变量都默认是由public static final修饰的。
接口中的所有抽象方法都默认是由public abstract修饰的。
接口中没有构造器。
接口采用多继承机制。

举例:

interface demo{
	//public static final Integer i=0;
	Integer i=0;
	//public abstract void method();
	void method();
}
1.3.3 抽象类和接口的区别

在这里插入图片描述

JDK8.0接口的新特性

静态方法:使用 static 关键字修饰。可以通过接口直接调用静态方法,并执行其方法体。我们经常在相互一起使用的类中使用静态方法。你可以在标准库中
找到像Collection/Collections或者Path/Paths这样成对的接口和类。

默认方法:默认方法使用 default 关键字修饰。可以通过实现类对象来调用。在已有的接口中提供新方法的同时,还保持了与旧版本代码的兼容性。
比如:java 8 API中对Collection、List、Comparator等接口提供了丰富的默认方法。

代码举例

interface A{
	public default void say() {
		System.out.println("A");
	}
	public static void method() {
		System.out.println("JDK8.0");
	}
}
interface B{
	public default void say() {
		System.out.println("B");
	}
}

public class Dome_interface implements A,B{

	@Override
	public void say() {
		System.out.println("dome");
		A.super.say();
		B.super.say();
	}
	
}

注意
1)实现接口中的默认方法冲突
如果细心观察,就会发现,在上面的代码中,接口A,B中都有默认方法say()
当Dome_interface类实现两个接口的时候,就会出现默认方法冲突,此时,可以通过上面的方式解决。
2)继承类和默认方法冲突
此时会根据类优先法则,自动忽略接口中的默认方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值