前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java易错知识点总结(四)

Java易错知识点总结(四)

作者头像
C_H
发布2022-11-15 14:52:49
1940
发布2022-11-15 14:52:49
举报
文章被收录于专栏:笔记c笔记c

目录

1.继承

1.Java只支持单继承,不支持多继承

2.Java支持多层继承

2.接口

1.接口不可以实现另一个接口

2.接口可以继承另一个接口

3.接口可以继承多个接口

4.接口不可以继承一个抽象类

5.抽象类可以实现多个接口

6.类可以多实现接口

7.一个类应该先继承类再实现接口

3.抽象类和抽象方法

易错知识

抽象方法的关键字abstract不能与private,final,static共存

4.接口的定义与实现

易错知识:

5.接口回调

6.abstract类与接口的比较


1.继承

1.Java只支持单继承,不支持多继承

class A extends B{}      //true class A extends B,C{}  //false

2.Java支持多层继承

class A{} class B extends A{}    class C extends B{}   

2.接口

先定义一些接口和类:

interface a{} interface b{} interface c{} abstract class AA{}

  • 1.接口不可以实现另一个接口
代码语言:javascript
复制
interface d implements a{}  		(False)
  • 2.接口可以继承另一个接口
代码语言:javascript
复制
interface e extends a{}				(True)
  • 3.接口可以继承多个接口
代码语言:javascript
复制
interface f extends a,b,c{} 		(True)
  • 4.接口不可以继承一个抽象类
代码语言:javascript
复制
interface g extends AA{}			(False)
  • 5.抽象类可以实现多个接口
代码语言:javascript
复制
abstract class h implements a,b,c{}	(True)
  • 6.类可以多实现接口
代码语言:javascript
复制
class i implements a,b,c{}			(True)
  • 7.一个类应该先继承类再实现接口
代码语言:javascript
复制
class k extends AA implements a{}	(True)
class j implements a extends AA{}	(False)

3.抽象类和抽象方法

易错知识

abstract类中可以有抽象方法,也可以有非抽象方法 一个非抽象类是某个抽象类的子类,那么他必须重写父类的抽象方法 抽象类中可以有构造函数 抽象类是不能实例化的,可以靠非抽象子类来实例化

抽象方法的关键字abstract不能与private,final,static共存

抽象方法必须由子类来实现,不能加private final修饰的方法不可以被覆盖(重写) static方法是由类来实现的

4.接口的定义与实现

接口体中包含常量(不允许有变量)(public、final可以省略) 接口体中的方法一定是抽象方法,且访问权限是public(public、abstract可以省略) 抽象方法不含方法体{}

代码语言:javascript
复制
interface Printable{
	public final int x=100;
	public abstract void add();
}

也可以写成

代码语言:javascript
复制
interface Printable{
	int x=100;
	void add();
}

易错知识:

如果一个非抽象类实现了某个接口,那么这个类必须重写该接口的所有方法 接口中的方法都是public修饰的(public可以省略),非抽象类重写该接口的所有方法,访问权限必须为public(不能降低访问权限) 如果一个类声明实现一个借口,但没有重写接口中的所有方法,那么这个类必须是abstract类

被重写的方法

重写的方法

public

public

protected

public/protected

友好

public/protected/友好

5.接口回调

接口回调与上转型对象调用子类重写的方法类似

代码语言:javascript
复制
interface Playable{
	void play();
}
class Cat implements Playable{
	public void play(){
		System.out.println("cat");
	}
}
public class Test{
	public static void main(String[] args){
		Playable xx=new Cat();		声明接口变量,且在接口变量中存放对象的引用
		xx.play();                  接口回调
	}
}

6.abstract类与接口的比较

abstract类和接口都可以有abstract方法 接口中只可以有常量,不能有变量;而abstract类中既可以有常量也可以有变量 abstract类中可以有非abstract方法,而接口不可以

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1.继承
    • 1.Java只支持单继承,不支持多继承
      • 2.Java支持多层继承
      • 2.接口
      • 3.抽象类和抽象方法
        • 易错知识
          • 抽象方法的关键字abstract不能与private,final,static共存
          • 4.接口的定义与实现
            • 易错知识:
            • 5.接口回调
            • 6.abstract类与接口的比较
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档