2020-12-01

继承的定义

继承就是子类继承父类的特征和行为,使子类对象(实例)具有父类的方法,或子类从父类继承方法,使得子类具有父类相同的行为。
  注意:java只能实现单继承。

作用

描述类与类之间的关系,避免了类与类之间的重复代码;同时,继承自父类的子类可以使用父类非私有化方法和属性,子类可以重写父类的方法,但重写方法时需要注意:
  1.返回值类型只能为父类的类型或者父类类型的子类,不能返回比父类方法返回值类型更大的类型;
  2.子类重写父类方法的访问权限必须大于父类方法的访问权限;
  3.子类不继承父类的构造函数,但可以通过super关键字调用父类的构造函数。
  重写:方法名和参数相同,方法体不同。

实现继承

继承是怎么实现的呢?
  这里用到了一个关键字“extends”,原义是延伸、拓展的意思。示例如下:

package com.extends01;
//父类
public class Father {
	public String name;
	private int id;
	public int age;
	public String gender;
	public void study(){
		System.out.println("hello sun");
	}
}

package com.extends01;
//子类
public class Sun extends Father{
	@Override
	public void study() {
		System.out.println("this is sun extends method");
//		super.study();
	}
	public static void play(){
		System.out.println("this is sun single method");
		System.out.println("the sun can play games very good");
	}
}

上面就是一个最基本的子类继承父类的例子。

final关键字

这里为什么单独讲到一个final关键字呢?
  因为它比较重要,比如说我们有时候在查看别人代码的时候,有时候是没有办法对其代码做修改或者补充的,为什么呢?正因为别人的代码用final修饰过
  final的意思是最终的,不可更改的;所以用final修饰的属性方法或者类都是不可更改或继承的。
  来看看上面的父类用final修饰后的情况:

package com.extends01;
//父类
public final class Father {
	public String name;
	private int id;
	public int age;
	public String gender;
	public void study(){
		System.out.println("hello sun");
	}
}

package com.extends01;
//子类
public class Sun extends Father{
	@Override
	public void study() {
		System.out.println("this is sun extends method");
//		super.study();
	}
	public static void play(){
		System.out.println("this is sun single method");
		System.out.println("the sun can play games very good");
	}
}

此时是有错误的,来看看报什么错误:
The type Sun cannot subclass the final class Father
Sun不能是final修饰的类Father的子类。

抽象类

抽象类指用abstract修饰的、不能被直接实例化的类。
来看:

package com.extends01;
//抽象类
public abstract class AbsClass {
	abstract void sleep();
}

package com.extends01;
//抽象类的实现类,必须重写父类的方法
public class AbsTrue extends AbsClass{

	@Override
	void sleep() {
		// TODO Auto-generated method stub
		
	}

}

package com.extends01;
//测试类
public class Test01 {
	public static void main(String[] args) {
		AbsTrue absTrue = new AbsTrue();
	}
}

接口

因为java只能实现单继承,所以引入了接口;接口是interface,接口的实现使用关键字implement,在eclipse中,接口的创建有两种方式:
第一种:把class改为interface;
第二种:创建时选择interface就可以。
注意:接口中只有方法的声明,没有定义(没有方法体);默认情况下接口的属性由public static final修饰,方法由public abstract修饰。

接口的实现

代码如下:

package com.extends01;
//测试类
public class Test01 {
	public static void main(String[] args) {
		AbsTrue absTrue = new AbsTrue();
	}
}
package com.interfacej;
//接口2
public interface Water {
	public String feel = "cool";
	public static void getWater(){
		System.out.println("the boy is drinking water");
	}
}
package com.interfacej;
//父类
public class Oxygen {
	public String weight;
	public static void getOxyen(){
		System.out.println("the animal must be alive rely on oxyen");
	}
}
package com.interfacej;
//这是继承了Oxygen并且实现了Sun和Water接口的类
public class Animal extends Oxygen implements Sun,Water{
}

上面就是一个简单的实现java继承和接口实现的空例,那么今天的分享就到这里了,谢谢!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值