1
package cm.abstracts.define;
/**
在本程序的类中定义了一个抽象方法print(),既然类中有抽象方法,那么类就必须定义为抽象类,所以使用了
“abstract class”来定义该类。
但是一定要记住:抽象类只是比普通类多了抽象方法的定义,即关键字abstract,其他结构与普通类完全一样。
*/
//这个类用来测试抽象类的定义
public class ModelFthirtySix {
static String name;
public static void main(String[] args) {
String sex = null;
System.out.println(sex);
System.out.println(name);
}
}
/** 从熟练度来说,看来还是要加强度对static的学习与巩固 */
//定义抽象类,创建抽象类,声明抽象类关键字:abstract
//定义一个抽象类,使用abstract声明
abstract class Abstract{
//创建抽象方法,声明抽象方法关键字:abstract,抽象类中的抽象方法没有方法体 “ {} ”
//此方法并没有方法体的声明,并且存在abstract关键字,表示抽象方法
public abstract void aBstract();
//创建一个普通方法
public void fun() {
System.out.println("存在有方法体的方法!");
}
}
2
package cm.abstracts.define;
//这个类用来测试:抽象类不能直接实例化对象
/**
* 按照传统的思路,既然已经实例化好了抽象类,那么就应该通过实例化对象来操作,但是抽象类是不能直接进行对象实例化操作的。
即抽象类,是无法实例化的。
*/
public class ExampleFthirtySeven {
public static void main(String[] args) {
//错误的实例化抽象类对象
//报错:Cannot instantiate the type Abstracts不能实例化Abstracts类
// Abstracts a = new Abstracts();
/**本程序的代码在编译时会出现错误,也就是说抽象类不能进行直接的对象实例化操作。不能实例化的原因是什么呢?
当一个类的对象实例化后,就意味着这个对象可以调用类的属性或方法,但是在抽象类里面存在抽象方法,抽象方法
是没有方法体的。也就是,抽象方法没有方法体,无法被调用,进而无法实例化该类对象。但这并不是意味着,抽象类无
法使用,只不过必须遵守以下规则:
1、必须有子类继承
2、强制子类覆写抽象类的所有抽象方法。注意:是所有抽象方法,而不是所有方法
3、通过子类完成抽象类的实例化对象*/
}
}
/** 从熟练度来说,看来还是要加强度对static的学习与巩固 */
//定义抽象类,创建抽象类,声明抽象类关键字:abstract
//定义一个抽象类,使用abstract声明
abstract class Abstracts{
//创建抽象方法,声明抽象方法关键字:abstract,抽象类中的抽象方法没有方法体 “ {} ”
//此方法并没有方法体的声明,并且存在abstract关键字,表示抽象方法
public abstract void aBstract();
//创建一个普通方法
public void fun() {
System.out.println("存在有方法体的方法!");
}
}
3
package cm.abstracts.define;
//这个类用来测试通过正确创建抽象类的实例化对象使用抽象类
public class ExampleFthirtyEight {
public static void main(String[] args) {
//抽象类中涉及的,继承关系中,对象的向上转型,需着重学习了解。子类实例化对象,向上转型为抽象类、父类A的对象
A a = new B();
a.fun();
//由于print()已经过覆写,故对象a调用的是B类中已被覆写过的print()方法
a.print();
}
}
//创建抽象类,使用关键字abstract声明
abstract class A{
//方法有普通方法和构造方法:创建一个普通方法
public void fun() {
System.out.println("存在有方法体的方法!");
}
//创建一个抽象方法,没有方法体的声明,abstract关键字,
public abstract void print();
}
//创建子类:要想通过创建实例化对象,正确使用抽象类,须得创建一个子类,强制覆写抽象类所有方法,关键字extends,满足单继承语法
class B extends A{
//强制覆写抽象类中的所有抽象方法(不包含普通方法),print()方法。此处细节,绝大部分人在初接触时都容易混淆搞错,也包括我
public void print() {
System.out.println("Hello 彦舜! Hello MyLove! 出书筹备中,誓要出书!");
}
}
彦舜原创*正版
本文深入探讨了Java中的抽象类,包括其定义、特点、使用场景以及在后端开发中的重要作用。通过学习,读者将能更好地理解如何在设计模式和面试中运用抽象类。
389

被折叠的 条评论
为什么被折叠?



