①~⑥
父类:
/* 人类 */ public abstract class Person {//父类(所有子类的公共属性+公共方法的集合体) private String name; private int age; public Person(){} public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } /* 显示人类的详细信息 */ public void display(){ System.out.println("name:"+this.getName()+"age:"+this.getAge()); } /* 问候的方法,不同国家的人,问候的方式肯定是不同的。 因此,具体是怎么问候的,Person中是不确定,无法实现的。 针对于这个方法不缺定具体的实现是什么,那么就不应该给实现。 注意:在java中,只要一个方法带着大括号,不管大括号中有什么,只要有大括号就表示一种实现 */ //抽象方法的类必须是抽象类 public abstract void greet(); }
子类:
public class EnglishPerson extends Person{ public EnglishPerson(){} public EnglishPerson(String name, int age) { super(name, age); } //子类必须重写抽象类中的抽象方法。 @Override public void greet() { System.out.println("用英语打招呼!"); } }
main方法:
public class test { public static void main(String[] args) { Person p1 = new EnglishPerson("jack",20); p1.display(); p1.greet(); } }
⑦ abstract修饰的方法一定是抽象方法,抽象方法一定在子类中重写:
private 不能被继承,不能被继承就不能被覆盖,就不能被重写;
final最终的不能被重写;
stastic不能被继承就不能被重写。