• 五(十五)、abstract & 他的匿名子类


    abstract关键字使用
     1.abstract:抽象的;
     2.abstract可以用来修饰的结构:类 方法
     3.abstract修饰类:抽象类
                         此类不能实例化
                         抽象类中一定有构造器;便于子类对象实例化的时候调用(涉及子类对象实例化的全过程)
                         开发中,都会提供抽象类的子类,让子类对象实例化,完成相关操作;
     4.abstract修饰方法:抽象方法
                         抽象方法只有方法声明,没有方法体
                         包含抽象方法的类,一定是一个抽象类;,反之,抽象类可以没有抽象方法;
                         若子类重写了父类中的所有抽象方法(不光是直接父类,还有间接父类)后,此子类方可实例化;
                         若子类没有重写了父类中的所有抽象方法(不光是直接父类,还有间接父类)后,则此子类也是一个抽象类,
                     需要使用abstract修饰
                         
     5.使用注意点:
     a.abstract不能用来修饰:属性、构造器;
     b.abstract 不能用来修饰私有方法、静态方法,final的方法;
     

     1 public class Day15Abstract6 {
     2     public static void main(String[] args) {
     3         //不可被实例化
     4 //        Persons7 p1 = new Persons7();
     5 //        p1.eat();
     6     }
     7 }
     8 abstract class Persons7{
     9     String name;
    10     int age;
    11     int id = 1001;//身份证号
    12     
    13     public Persons7() {
    14     }
    15     public Persons7(String name, int age) {
    16         this.name = name;
    17         this.age = age;
    18     }
    19     
    20     public void eat() {
    21         System.out.println("吃饭");
    22     }
    23     
    24     //抽象方法,只有方法的声明,没有方法体;
    25     public abstract void eat1();
    26     
    27     public void walk() {
    28         System.out.println("走了");
    29     }
    30 }
    31 class student7 extends Persons7{
    32 
    33     @Override
    34     public void eat1() {
    35         // TODO Auto-generated method stub
    36         System.out.println("学生多吃有营养的");
    37     }
    38     
    39 }

     抽象类的匿名子类:

     1 public class Day15AnonymousSubClass10 {
     2     public static void main(String[] args) {
     3         method(new Student());//匿名对象
     4         Worker worker = new Worker();
     5         method1( worker);//非匿名的类的非匿名的对象
     6         method1(new Worker());//非匿名的类的匿名对象
     7         Persons7 p = new Persons7() {//创建了一匿名子类的对象
     8 
     9             @Override
    10             public void eat1() {
    11                 // TODO Auto-generated method stub
    12                 
    13             }
    14             
    15         };
    16         
    17         method1(new Persons7() {//创建了一匿名子类的匿名对象
    18 
    19             @Override
    20             public void eat1() {
    21                 // TODO Auto-generated method stub
    22                 
    23             }
    24             
    25         });
    26     }
    27     
    28     public static void method(Student s) {
    29         
    30     }
    31     public static void method1(Persons7 p) {
    32         p.eat1();
    33         p.walk();
    34     }
    35     
    36     
    37 }
    38 class Worker extends Persons7{
    39 
    40     @Override
    41     public void eat1() {
    42         
    43     }
    44     
    45 }
  • 相关阅读:
    关于js的语句类型运算符等
    关于flex的布局理解
    三天来都在写项目;今天开始学习了js
    12.13的学习内容
    Css多列语法笔记
    Css3关键帧动画
    codevs1085数字游戏(环形DP+划分DP )
    codevs1040统计单词个数(区间+划分型dp)
    POJ1062昂贵的聘礼
    POJ3687Labeling Balls
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/13449146.html
Copyright © 2020-2023  润新知