abstract:翻译中文意思是抽象的,可以用来修饰类、方法
分类:1)抽象类 2)抽象方法
abstract修饰类:抽象类
1) 不可被实例化
2)抽象类有构造器(凡是类都有构造器)
3)抽象方法所在的类,一定是抽象类。
4) 抽象类中可以没有抽象方法
当我们设计一个类,不需要创建此类的实例的时候,就可以考虑将其设置为抽象的,由其子类实现这个类的抽象方法以后,进行实例化
abstract修饰方法:抽象方法
1) 格式:没有方法体,包括{}. 如:public abstract void eat();
2)抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法
3)若子类继承抽象类,并重写了所有的抽象方法,则此类是一个“实体类”,即可以实例化
4)若子类继承抽象类,没有重写所有的抽象方法,意味着此类中仍有抽抽象方法,则此类必须声明为抽象的!
代码示例1:
public class TestAbstract { public static void main(String[] args) { // Person p1 = new Person(""); // p1.eat(); Student s = new Student(); s.eat(); Person p = new Student(); p.eat(); } } abstract class Creator{ abstract void breath(); } abstract class Person extends Creator{ String name; public abstract void eat();//保留功能没有具体实现 public abstract void walk(); public String getName() { //也可以存在有具体实现的方法 return name; } public void setName(String name) { this.name = name; } public Person() { } public Person(String name) { this.name = name; } } class Student extends Person { @Override public void eat() { System.out.println("学生在吃饭"); } @Override public void walk() { System.out.println("学生在走路"); } @Override void breath() { System.out.println("学生在呼吸"); } } abstract class Worker extends Person { @Override public void eat() { System.out.println("工人在吃饭"); } // @Override // public void walk() { // // } } class Animal{ //不是抽象方法 public void sleep(){ } }结果:
学生在吃饭
学生在吃饭
代码示例2:
//abstract 不能用来修饰属性、构造器、private、final、static public class TestAbstract1 { } abstract class A1{ // abstract int name; 属性不可覆盖,没有任何意义 // public abstract A1() { 构造器不能被重写 // // } // private abstract void method1(); 子类不能覆盖(或重写)声明为private的方法的 //关键字本身就矛盾,final是希望不被重写,而abstract是希望被重写 // public abstract final void method2(); // static可以通过类来调用,但这个连方法体都没有也将产生矛盾 // public abstract static void method3(); }
本文详细介绍了Java中抽象类和抽象方法的概念及其使用方法。包括抽象类的特点、如何定义抽象方法、子类如何重写抽象方法等内容。通过具体代码示例展示了抽象类和抽象方法的应用场景。
3681

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



