J5 抽象类和接口

1.final关键字

1.1概念

  • final关键字在java中被称为完结器,表示最终的意思
  • final能声明类,方法,属性

1.2注意

  • 使用final声明的类不能被继承,类似被打上final标签的类就是太监,不能有子孙后代

  • 使用final声明的方法不能被重写

  • 使用final声明的变量变成常量,常量是不可以被修改的,常量应该大写(编写规范)

2.抽象类

2.1抽象类概念

  • 包含一个抽象方法的类就是抽象类

抽象方法:声明却未被实现的方法,抽象方法必须使用abstract关键字声明

  • 抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法

  • 抽象类不能直接实例化,要通过其子类进行实例化

  • 定义格式

abstract class className{
    属性;
    方法;
    抽象方法;
}
  • 示例
package com.hanqi.java;

//抽象类
abstract class Abs{
	private int age;
	public void tell() {
		
	}
	public abstract void say();	//抽象方法
}

class AbsDemo extends Abs{
	//实现父类抽象方法
	public void say() {
		
	}
	
}
public class test02 {

	public static void main(String[] args) {
		// 子类实例化抽象方法
		AbsDemo a = new AbsDemo();
		a.say();
	}

}

3.java接口

3.1概念

  • 接口是java中最重要的概念,接口可以理解为一种特殊的类,里面全部是全局变量和公共的抽象方法所组成
  • 接口的实现也必须通过子类,使用implements,而接口是可以多实现的
  • 接口格式
interface interfaceName{
    全局变量;
    抽象方法;
}
  • 一个子类可以同时继承抽象类和实现接口,例如
package com.hanqi.java;

interface Inter{
	public static final int AGE = 100;
	public abstract void tell();
}
interface Inter2{
	public abstract void say();
}
abstract class Abs1{
	public abstract void print();
}
class A extends Abs1 implements Inter,Inter2{
	public void tell() {
		
	}

	public void say() {
		
	}

	public void print() {
		
	}
}
public class test03 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		A a = new A();
		a.tell();
		a.say();
		a.print();
		System.out.println(Inter.AGE);	//全局常量使用其自身类调用
	}

}
  • 一个接口不能继承一个抽象类,但是却可以通过extends关键字同时继承多个接口,实现接口的多继承,例如
package com.hanqi.java;

interface Inter{
	public static final int AGE = 100;
	public abstract void tell();
}
interface Inter2{
	public abstract void say();
}
abstract class Abs1{
	public abstract void print();
}
class A extends Abs1 implements Inter,Inter2{
	public void tell() {
		
	}

	public void say() {
		
	}

	public void print() {
		
	}
}
interface Inter3 extends Inter, Inter2{
	
}
public class test03 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		A a = new A();
		a.tell();
		a.say();
		a.print();
		System.out.println(Inter.AGE);	//全局常量使用其自身类调用
	}

}
posted @ 2021-08-05 23:31  MHDSG  阅读(159)  评论(0)    收藏  举报