推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

Java 类,接口和抽象类的继承

   2023-07-16 网络整理佚名1570
核心提示:类能继承类和接口,但是类()单一继承,接口()多继承;注意:只有类可以实例化(抽象类不可以实例化,接口就是特殊的抽象类),所以接口没有构造方法**接口只能继承接口,()多继承,但不可以实例化Java抽象类**抽象方法一定在抽象类中,但抽象类中不一定有抽象方法。抽象类(注意:它只能被继承,子类必须继承重写)能继承类和接口,但是类()单一继承,接口()多继承。

1.Java类

类可以继承类和接口,但是class()单继承,()多重继承;

注意:只能实例化类(抽象类不能实例化,接口是特殊的抽象类),所以接口没有构造函数

class A {
	public A(){			//构造方法(无参)
	}
	public void name() {//成员方法
		System.out.println("A");
	}
	static void names() {//静态方法
		System.out.print("A");
	}
}
interface B {
	
	default void name() {//成员方法
		System.out.print("B");
	}
	static void names() {//静态方法
		System.out.print("B");
	}
}
interface C {
	default void name() {//成员方法
		System.out.print("C");
	}
	static void names() {//静态方法
		System.out.print("C");
	}
}
class D extends A {			//继承类
}
class D implements B, C {	//继承接口
}
public class test7 {
	public static void main(String[] args) {
		A a1=new A();
		A a=new D(); //向上转换
		((D)a).name();//安全的向下转换
		((D)a1).name();//不安全的向下转换(运行报错)
	}
}

2.Java接口

**接口只能继承接口、()多重继承,但不能实例化

关键字 void 方法名称(如类的成员方法)

**

interface B {
	
	default void name() {//成员方法
		System.out.print("B");
	}
	static void names() {//静态方法
		System.out.print("B");
	}
}
interface C {
	default void name() {//成员方法
		System.out.print("C");
	}
	static void names() {//静态方法
		System.out.print("C");
	}
}
interface E extends B,C{
	default void name() {
	// 继承了B的name方法,如果不明确 B类和C类会起冲突
		B.super.name();
	}
}
class F implements E{//为了可以实例化
	public void name(){
		E.super.name();
	}
}
public class test7 {
	public static void main(String[] args) {
		F f=new F();
		f.name();
	}
}

3.Java抽象类

**抽象方法必须在抽象类中,但抽象类不一定有抽象方法。

关键字类名=抽象类

关键字() void(数据类型)方法名=抽象方法。 (注:只能继承,子类必须继承并重写)

可以继承类和接口,但是class()单继承,()多重继承。

**

abstract class H extends A{   		//继承类
}
abstract class H implements B,C {	//继承接口
}
abstract class I{
	public I(){						//构造方法
	}
	public abstract void name();	//抽象方法的为一格式
}
class G extends I{
	public void name(){
		System.out.print("抽象方法的子类");
	}
}
public class test7 {
	public static void main(String[] args) {
		G g=new G();
		g.name();
	}
}

4. Java继承:重写和重载

重写:参数类型、参数位置、参数个数不变,只改变方法内容

重载:参数类型、参数位置、参数个数、方法内容均可更改

public voidint a ,double b){
}
//1
public voiddouble a ,double b){
}
//2
public voiddouble b, int a){
}
//3
public voidint a, double b, int c){
}

 
标签: 抽象类 接口
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON