• java类的继承,多态,抽象类与接口


    知识点梳理:
         1,怎样定义自己的类.
      MyStarFrame,MyStarPanel
      类中定义:
      (1)属性(数据),变量.
      (2)方法(函数),行为.
      (3)构造方法(特征,作用,何时被调用,构造方法怎么写).

      2,继承自已经存在的类.(API,自己写的).
         写继承:
        public class A extends B{
             /**方法的覆盖,重写
              * 父类中有同名同参的方法.
              */
              public void paint(){
            }

           /**扩展的新方法
           */
           public void panit(Graphics g){
           }
           }

         A a = new A();

      代码复用.
      this:当前对象
      super:父类对象

      class A{
        private int abc;

        public void m1(){
            this.abc=10;
        }
      }
        ...
        A a = new A();
        a.m1();
        A b = new A();
        b.m1();
        ...

    ===========================================
      A->B->C->D
      怎么用:
      1,线程,内部类,AWT,Swing,...

      面向对象:
      1,怎么样定义类:属性和方法
      2,什么是构造方法
      3,怎样生成对象,生成对象的语法和步骤.
      4,怎样去继承一个已经存在的类.
      5,继承的好处.
      6,方法的覆盖.
    ===========================
      继承关系是   
      A "is a" B
      A extends B
      关联(聚合):
      A "has a" B
      访问控制修饰符:
      类中的成员:属性和方法
      Class A{
        public int a;//在任何位置都可访问
        protected int b;//包内可见,子类可见
        int c; //包内可见
        private int d;//只能在本类的内部访问
        为对象封装提供语法基础.
    ===========================
      类的基础:
      类是封装,类产生了数据的封装.
      学生成绩管理:
      1,学生科目成绩:int,double
      2,科目名称:String
      3,学生:  
      private   学号:String,long
      private   姓名:String
      private   性别:char
      private   年龄:int(-2^31~+2^31-1)
      private   班级:String
      private   年级:String
      private   考试成绩:int
      public static int abc;//静态属性
      统一的规则来访问,
      public 方法:你希望外部访问的
      ===========
      private 方法:你不希望外部访问的,你只是为内部的其他方法提供服务.
      人类:
        public void 吃饭(){
          1,找地方
          2,点菜
          3,上菜
          4,开吃
          5,消化
          6,排泄
        }
     
        private void 消化(){

        }
         ......
    =========================
    static:
      类的所有成员(属性和方法)分为2种:
      static成员=类成员
        描述类本身的特征的.
        访问时用类名直接访问:
          A.abc
          A.m1();
        在整个程序中只有一份,在类加载时初始化.

      非static成员=实例成员=对象成员
        描述对象个体的特征的
        需要对象名去访问:
      A a=new A();
      a.def;
      a.m2();
      有多少个对象就有多少个实例属性,在生成对象时创建.  
    ==================
    java ABC
      一个JAVA程序运行时过程:
      1,启动JVM.
      2,加载要运行的类(ABC.class)
      3,找类的main函数,并运行main函数
    ==================================
    关于JAVA的继承
      1,JAVA是单一继承,每个子类只有一个唯一的父类,整个继承结构是一棵树.
         树状结构的根是Object.
      2,好处:继承关系简单清晰.
      3,缺点:只能从一个父类继承功能.
         CAR    :move
         Weapon :attack
       Tank extends CAR implements Weapon
    ================================
    什么是多态?
      一个对象多种形态.
      继承关系是对象多态的基础.
       "Is a"关系
        Bird b=new Bird();
        Animal a=new Bird();
        Object o=new Bird();
    基本规则(定理):
      1,如果我们把子类对象当作父类对象来看,那么,我们只能访问父类中有定义的属性和方法.不能访问子类扩展的属性和方法.
       Animal a=new Bird();
         a.move();
         a.eat();
         a.singSong();//不能访问
         Person
           JavaTeacher  teachingJava()

      2,当子类覆盖了父类的方法,如果我们把子类对象当作父类对象来看,去调用该方法,则调用的是子类覆盖之后的方法.
         Animal a=new Bird();
         a.move();//输出 Flying!

            Animal--  eat()
                   马---eat(){"吃草"}
                狮子---eat(){"吃肉"}

        Animal a=new Bird();
        1,主观认为    客观存在
        2,编译时类型  运行时类型
        编译时类型:编译器把a当什么看  
        运行时类型:JVM把a当什么看
        a.singSong();//
    ==============================
    抽象和接口
      具体的类,描述具体事物的.
      动物:抽象类,方法无法实现的(抽象的)

    =================================
    抽象类与接口
      即时战略游戏:星际争霸,帝国时代,...
      不同的兵种,进攻
      坦克兵
      机枪兵
      战斗机
      .....
      public abstract class Person{
      ... ....
          public abstract void attack();
      }

      public class Tank extends Person{
         public void attack(){
             发射炮弹
         }
      }

      public class Flighter extends Person{
         public void attack(){
             发射导弹
         }
      }

      Person[] army=new Person[10];
      army[0]=new Tank();
      army[1]=new Flighter();
      army[3]=....
      ... ...

      for(int i=0;i<army.length;i++){
          army[i].attack();
      }
    ==============================
    接口:特殊的抽象类
      1,接口中所有方法都是抽象方法.
      2,接口没有实例属性,所有属性都是static final
      3,接口没有构造方法
      4,一个类可以同时实现多个接口

    为什么要使用接口?
      1,对单一继承结构的补充.
      2,接口丰富了对象的多态.
      3,面向接口的编程(编程或架构的思想)

    软件开发追求的目标:
      一个中心,两个基本点.
      一切以用户需求为中心,
      保证软件具有良好的可扩展和可维护性
      高内聚,低耦合的
      内聚力:软件系统独立完成某项工作的能力,不需要,只需要外部少量的参与.
      汽车:
      手动档-->自动档汽车-->无人驾驶
        5           3               1

      耦合度:模块与模块,类与类之间关联关系的复杂度.
      A->B->C->D->E(最安全)
      接口是稳定的,不变的,抽象的.

                                                                        若有不完善的地方请大家多提意见,转发时请注明出处!

  • 相关阅读:
    $("").append无反应
    go 客户端、服务端
    go mysql insert变量到数据库
    .gvfs: Permission denied
    go笔记
    java socket通信笔记
    (转)linux中top命令下显示出的PRNIRESSHRS\%MEM TIME+都代表什么
    adb Android Debug Bridge 安卓调试桥
    一阶段冲刺(四)
    一阶段冲刺(三)
  • 原文地址:https://www.cnblogs.com/zmengj/p/4323091.html
Copyright © 2020-2023  润新知