58同城建网站怎么做,wordpress评论显示数字ip,中小企业建站是什么,好玩的网页传奇认识抽象类#xff1a;
当我们在做子类共性功能抽取的时候#xff0c;有些方法在父类中并没有具体的体现#xff0c;这个时候就需要抽象类了。在Java中#xff0c;一个没有方法体的方法应该定义为抽象方法#xff0c;而类中如果有抽象方法#xff0c;该类就定义为抽象类…
认识抽象类
当我们在做子类共性功能抽取的时候有些方法在父类中并没有具体的体现这个时候就需要抽象类了。在Java中一个没有方法体的方法应该定义为抽象方法而类中如果有抽象方法该类就定义为抽象类。 在Java中有一个abstract它是抽象的意思可以用它修饰类、成员方法。 package cn.ensource.d4_abstract;// 抽象类
public abstract class A {// 抽象方法必须用abstract修饰并且只有方法签名不能有方法体public abstract void run();
} 我们要注意的是
抽象类不能创建对象。 A 是一个抽象类不能被实例化。 抽象类仅作为一种特殊的父类让子类继承并实现。 A 类
package cn.ensource.d4_abstract;// 抽象类
public abstract class A {private String name;public static String schoolName;public A() {}public A(String name) {this.name name;}public String getName() {return name;}public void setName(String name) {this.name name;}public static String getSchoolName() {return schoolName;}public static void setSchoolName(String schoolName) {A.schoolName schoolName;}// 抽象方法必须用abstract修饰并且只有方法签名不能有方法体public abstract void run();
}
B类
package cn.ensource.d4_abstract;// 抽象类一个类继承了抽象类必须重写完抽象类的全部抽象方法
public class B extends A{Overridepublic void run() {System.out.println(B run);}
}
测试类
package cn.ensource.d4_abstract;public class Test {public static void main(String[] args) {// 目标认识抽象类和其特点// 注意抽象类不能创建对象
// A a new A();B b new B();b.run();}
} 抽象类的场景和好处 也就是说所有子类都要完成这个方法。那我们在父类中抽象出这个抽象方法。
实现行为多态。 抽象类不是不能调用方法是不能创建对象。 使用了抽象类更专业多态会更好 强制子类重写方法。 abstract类
package cn.ensource.d4_abstract2;public abstract class Animal {private String name;public abstract void cry(); // 让子类都进行重写方法由子类实现对多态支持更好public String getName() {return name;}public void setName(String name) {this.name name;}
} Cat类
package cn.ensource.d4_abstract2;public class Cat extends Animal{Overridepublic void cry() {System.out.println(喵喵~);}
}
Dog类
package cn.ensource.d4_abstract2;public class Dog extends Animal{Overridepublic void cry() {System.out.println(旺旺~);}
}
测试类:
package cn.ensource.d4_abstract2;public class Test {public static void main(String[] args) {// 掌握抽象类的好处Animal a new Cat();a.setName(叮当猫);a.cry(); // 更好地支持了多态System.out.println(a.getName());}
}
抽象类的应用场景和超出是什么
父类知道每个子类都要做某个行为但每个子类要做的情况不太一样父类就定义成抽象方法交给子类去重写实现。我们抽象出来的抽象类就是为了更好地支持多态。 抽象类我们不是非要用的。强制子类重写。
用抽象类是最佳实践不用也是可以的。但是使用是最佳实践。 抽象类中不一定有抽象方法有抽象方法的类一定是抽象类。
抽象类是不能实例化的
抽象类如何实例化呢参照多态的方式通过子类对象实例化这叫抽象类多态。
抽象类的子类
要么重写抽象类中的所有抽象方法。
要么是抽象类。