abstract关键字(抽象类)【Java】

2023-12-22 15:32:23

目录

一、abstract关键字

????????1.1 abstract修饰类(抽象类)

????????1.2 abstract 修饰方法(抽象方法)

????????1.3 abstract使用的注意点

二、abstract 关键字的举例说明

一、abstract关键字

解释为抽象的,可以修饰:类、方法

????????1.1 abstract修饰类(抽象类)

①此类不能实例化

②抽象类中一定要有构造器,这样会便于子类实例化时的调用。

????????1.2 abstract 修饰方法(抽象方法)

①抽象方法:只有方法的声明,没有方法体

②包含抽象方法的类,一定是一个抽象类,但在一个抽象类中,可以没有抽象方法

③若子类重写了父类中所有的抽象方法后,此子类就无需使用abstract修饰,反之要使用abstract修饰

????????1.3 abstract使用的注意点

①abstract不能修饰变量、代码块、构造器

②abstract不能修饰私有方法、静态方法、final的方法、final的类

二、abstract 关键字的举例说明?

package cn.spilt_charging.contact;

public class abstractTest {
	public static void main(String[] args) {
		
		human h1 = new human() {   //创建了一个匿名子类的对象(当子类重写了抽象父类中所有的抽象方法后,此子类方可实例化)

			@Override
			public void eat() {
				
			}

			@Override
			public void breath() {
				
			}
		};
		
		method(new Student("TOm", 10));  //匿名对象
		
		method1(new human() {  //创建匿名子类的匿名对象
			
			@Override
			public void breath() {
				
			}
			
			@Override
			public void eat() {
				
			}
		});
		
		Student stu1 = new Student();
		method1(stu1);  //非匿名的类非匿名的对象
		
		method(new Student());  //非匿名的类匿名的对象
	}
	
	public static void method(Student s) {
			
	}
	
	public static void method1(human human2) {
		human2.eat();
		human2.breath();
	}
}

abstract class Creature{
	
	public abstract void breath();
	
}

abstract class human extends Creature{
	String name;
	int age;
	public human() {

	}
	
	public human(String name,int age) {
		this.name = name;
		this.age = age;
	}
	
	//抽象方法
	public abstract void eat();
	
}

class Student extends human{   //当子类重写了父类(父类使用abstract修饰时)中所有的抽象方法后,该子类就无需使用abstract修饰
	public Student(String name,int age) {
		super(name,age);
	}
	
	public Student(){
		
	}
	
	public void breath() {
		System.out.println("呼吸");
	}
	
	public void eat() {
		System.out.println("吃饭");
	}
}

输出结果:?

?最后到这里,文章就结束了,如果在内容上有问题,恳请各位大佬指出。

文章来源:https://blog.csdn.net/m0_64681789/article/details/128353054
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。