• 抽象类、接口、多态总结之一


    1、抽象类:

      1)包含一个抽象方法的类必是抽象类;

      2)用abstract关键字声明;

      3)抽象类必须被子类继承,子类(如果不是抽象类),必须覆盖抽象类中的全部抽象方法。

    2、子类覆写了抽象方法,然后再主方法中通过子类的实例化对象就可以调用子类覆写过的方法。

     1 abstract class A{
     2     public static final String FLAG = "CHINA";
     3     private String name = "zhangsna";
     4     public String getName() {
     5         return name;
     6     }
     7     public void setName(String name) {
     8         this.name = name;
     9     }
    10     public abstract void print();
    11 }
    12 class B extends A{
    13     public void print() {
    14         System.out.println("FLAG=" + FLAG);
    15         System.out.println("姓名" + super.getName());
    16     }
    17     
    18 }
    19 public class AbstractDemo02 {
    20 
    21     public static void main(String[] args) {
    22         B b = new B();
    23         b.print();
    24     }
    25 }

    输出结果为:

    FLAG=CHINA
    姓名zhangsna

    3、抽象类中的无参构造方法

     1 abstract class A{
     2     public A(){
     3         System.out.println("A中的构造方法");
     4     }
     5 }
     6 class B extends A{
     7     public B(){
     8         System.out.println("B中的构造方法");
     9     }
    10 }
    11 public class AbstractDemo03 {
    12 
    13     public static void main(String[] args) {
    14         B b = new B();
    15     }
    16 }

    输出结果为:

    A中的构造方法
    B中的构造方法

    4、抽象类中指定参数的构造方法

     1 abstract class Person{
     2     private String name;
     3     private int age;
     4     public Person(String name,int age){
     5         this.setName(name);
     6         this.setAge(age);
     7     }
     8     public String getName() {
     9         return name;
    10     }
    11     public void setName(String name) {
    12         this.name = name;
    13     }
    14     public int getAge() {
    15         return age;
    16     }
    17     public void setAge(int age) {
    18         this.age = age;
    19     }
    20     public abstract String getInfo();
    21 }
    22 class Student extends Person{
    23     private String school;
    24     public Student(String name,int age,String school){
    25         super(name, age);
    26         this.setSchool(school);
    27     }
    28     public String getSchool() {
    29         return school;
    30     }
    31 
    32     public void setSchool(String school) {
    33         this.school = school;
    34     }
    35     public String getInfo() {
    36         return super.getName() + super.getAge() + this.getSchool();
    37     }
    38     
    39 }
    40 
    41 public class AbstractDemo04 {
    42 
    43     public static void main(String[] args) {
    44         Student stu = new Student("zhangsan", 20, "aa");
    45         
    46         System.out.println(stu.getInfo());
    47     }
    48 
    49 }

    输出结果为:zhangsan20aa

  • 相关阅读:
    HDU4452——模拟——Running Rabbits
    URAL1711——模拟——Code Names
    URAL1721——匈牙利算法——Two Sides of the Same Coin
    Codeforces Round #FF (Div. 1)——A贪心——DZY Loves Sequences
    Codeforces Round #326 (Div. 2)
    URAL 7077 Little Zu Chongzhi's Triangles(14广州I)
    Codeforces Round #325 (Div. 2)
    位运算 UEST 84 Binary Operations
    LCA UESTC 92 Journey
    Codeforces Round #324 (Div. 2)
  • 原文地址:https://www.cnblogs.com/XuGuobao/p/7251183.html
Copyright © 2020-2023  润新知