Java学习日志——《Head First Java》 Day 7 8月20日

接口与多态

抽象

抽象类

  • 对于一些指向不明的类,对其进行初始化往往会出现逻辑上的错误,为了防止出现这种错误,可以在创建类时,将该类标记为“抽象的”,即“abstract”。
  • 被标记为抽象的类只能够在被继承时初始化它的子类,可以理解为:被标记为抽象的类,存在的意义即为被子类继承。(抽象类除了被继承之外,是没有用途、没有值、没有目的的)
abstract public class Class{
	//内容
}

public class Class_son{
	//内容
}

  • 此时的Class类将无法被初始化,即无法被new出来,但仍可以创建,并且可以赋予子类对象给父类。
public class Driver{
	Class A;
	A = new Class_son();
	//如上两句都可以通过编译

	A = new Class();
	//该语句不可通过编译,因为Class被标记为抽象

}

抽象的方法

  • 除了类之外,也可以将方法标记为abstract的。
  • 抽象的类代表此类必须要被extend过,而抽象的方法代表此方法一定要被覆盖过。
  • 抽象的方法没有实体,方法一旦被标记为抽象,则没有具体的方法体:
public abstract void Method();//没有内容、没有方法体
  • 如果你声明出了一个抽象的方法,就必须要将该类也标记为抽象的。不能够在非抽象类中拥有抽象的方法。
  • 必须实现所有抽象的方法。

实现的方法:以相同的方法鉴名(名称与参数)和相同的返回类型创建出非抽象的方法。

Object类

在Java中的所有类都是从Object这个类继承出来的。

常见用法

1.判断两对象是否相等(包括类与值):obj.equals()
2.获得对象初始化时的类:obj.getClass()
3.获得类的名称和一串数字:obj.toString()

其它
  • Object这个类不是一个抽象类
  • 使用Object类型的多态引用会出现很多问题,例如:从`ArrayList中调取的所有对象均为Object类型,无法实现其子类的方法。
  • 对于上述问题可以通过强制类型转换将对象类型改变。

如果不能确定它是否是某一类型,可以使用instanceof这个运算符来检查,方法如下:

if (obj instanceof Class_obj){
	Class_obj A = (Class_obj) obj;
}

接口(interface)

接口的定义与实现

定义(interface)
public interface Pet{...}
实现(implements)
public class Dog extends Animal implements Pet{...}

接口的方法一定是抽象的

  • 接口的方法一定是抽象的,但在接口中创建方法可以不用加abstract,语法同抽象的方法相同。
  • 接口的方法默认有public和abstract两种属性。
  • 如第一点所说,必须在对接接口的类中实现所有接口中的方法。

其它要点

  • 一个类可以实现多个接口
  • 抽象的类可以带有抽象和非抽象的方法,如果类带有抽象的方法,则此类必定标识为抽象的
  • 要从子类调用父类的方法可以使用super关键词
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值