抽象方法:使用abstract修饰的方法,没有方法体,只有声明。抽象方法可以当做是一种规范,让子类必须实现。
注意:
1.抽象方法没有方法体,只能以分号结尾
2.抽象方法只能声明在抽象类中(含有抽象方法的类一定是抽象类)
3.抽象方法必须被子类实现;子类如果不能实现抽象方法,子类也必须是抽象类
************************************************************************************
包含抽象方法的类就是抽象类,通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用
注意:
a、有抽象方法的类只能定义成抽象类,但抽象类中不一定有抽象方法
b、抽象类不能实例化,即不能用new来实例化抽象类。
c、从抽象类可以包含属性、方法、构造方法、final修饰的方法。但是构造方法不能用来new实例,只能用来被子类调用。
d、抽象类中可以包含0个或多个抽象方法
e、抽象类只能用来被继承。
f、 抽象方法必须被子类实现;子类如果不能实现抽象方法,子类也必须是抽象类
抽象类:
package com.sxt.abstract01;
/*** 使用abstract修饰的类称为抽象类* */
public abstract class Person {
//1.成员变量、实例变量、属性
private String name;
//2.成员方法、实例方法
public void intro() {
System.out.println(“大家好,我的名字是:”+name);
}
//3.静态方法
public static void show() {
}
//抽象类可以有 4.构造方法
public Person() {
System.out.println(“Person类的无参构造方法”);
}
//5.final修饰的方法,只能被子类调用,不能被子类重写
public final void fun() {
}
}
继承类及main方法:
package com.sxt.abstract01;
public class Student extends Person{
public Student() {
super();//调用父类中的无参构造方法
System.out.println(“Student类中的无参构造方法”);
}
public static void main(String[] args) {
//Cannot instantiate the type Person抽象类不可以创建对象
//Person person = new Person();
Student stu = new Student();
}
public abstract class Animal {
public abstract void shout();
}
class Dog extends Animal{
@Override
public void shout() {
System.out.println(“汪汪汪…….”);
}
}
class Cat extends Animal{
@Override
public void shout() {
System.out.println(“喵喵喵………”);
}
}
public class Test {
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();
dog.shout();
cat.shout();
}
}
本站推荐
-
1248
-
1038
-
594
-
510
-
489