zoukankan      html  css  js  c++  java
  • JAVA_面向对象总结

    1.对象和类
    什么是对象?
    就是现实世界真实存在的个体/实体
    例如:一个人;一支笔;一把椅子....
    什么是类?
    就是具有相同或相似属性和行为的对象的集合
    例子:人类;鸟类....
    class Human{//创建了一个 Human的类
    /* 相同或相似的属性 */ String name;//姓名
    int age; String address;
    /* 相同或相似的行为(方法) */
    void eat(){} void sleep(){}
    }

    2.继承的意义
    1)意义:为了代码的复用
    2)语法:通过 "extends" 关键字来继承
      被继承的类我们叫 “超类或者父类”,继承的类我们叫“派生类或者子类”。
      继承的特点:
      -----》一个子类只能由一个父类,但是一个父类可以有很多个子类,这个特点我们称之为“继承的单一性”
        (可以理解为:一个爸爸可以有多个儿子,但是一个儿子只能有一个爸爸.)
      -----》子类可以继承父类,子类还可以被继承以此类推(爷爷-->儿子-->孙子......),这个特性我们称之为“继承的传递性”
    3)理解过程:
     --->现实世界中的继承
    继承财产----------------------------------------------------------------结果:财产虽然不是我挣得,但是我也能用
    继承皇位----------------------------------------------------------------结果:江山不是我打的,但是我也能坐
    继承工作(早些年的时候)--------------------------------------------结果:工作不是我找的,但是我也能工作
    --->代码中的继承
    结果:代码不是我写的,但是我也能用
    例子:
    class Human{//超类/父类
      String name;
      int age;
      String address;
    void eat(){}
      void sleep(){}
    }
    /*
    *@简述:这个Teacher类继承了Human类,那么Teacher类具有Human中所有的属性和行为
    *包括 name,age,address,还有方法eat() 和 sleep()
    *虽然Teacher类中没有写但是也是属于他的,Teacher对象同样能够访问和使用这些
    *属性和行为
    */
    class Teacher extends Human{//继承Human类
      double sarray;//老师有一个公资属性
      void teach(){//老师有一个特有的教学行为(方法)
      }


    }
    class Test{//派生类/子类
      public static void main(String[] args){
        Teacher t = new Teacher();
        t.sarray = 10001;
        t.name = "张三";
        t.age = 12;
        t.address = "北京";
        t.eat();
       //.....

      }



    }



    总结:从这个例子中可以看出虽然Teacher类中没有写name,age,address,eat(),sleep()等属性和行为,但是Teacher类通过继承Human类,也具有了这些属性

    和行为。这样做的好处就是可以大大提高代码的复用性。

     
    4.方法的“重载”与“重写”
    重载:
    @简述:发生在同一个类中,方法名相同,参数列表不同,方法体不同
    @意义:以适应用户的各种不同的需求
    直接上代码
    /*
    @简述:类Aoo中有四个重载的方法
    */
    class Aoo{
      void show(){
        //....
      }
      void show(int a){
        //....
      }
      void show(String str,int a){  
        //....
      }
    void show(int a,String str){  
        //....
      }
      

    }

    重写:

    @简述:发生在父子类中,方法名相同,参数列表相同,方法体不同

    @意义:当父类的一些方法子类觉得不好用了或者需要改进时,就需要“重写”

    class Aoo{
      void show(){
        方法体1
        //....

      }
    }
    class Boo extends Aoo{
      void show(){
        方法体2
        //....

      }

      


    }

     重点:

    @重写与重载的区别?

    重写:发生在父子类中,方法名相同,参数列表相同,方法体不同

    重载:发生在同一个类中,方法名相同,参数列表不同,方法体不同

    5.访问控制 static 和 final
    static修饰符(重点):
    简述:static是JAVA中一个常见的修饰符,用的比较少
    适用场合:用于修饰的变量为(图片,视频,音频)时,特点就是数据只有一份。大家都用同样的一份数据。
    1)static修饰变量
    @简述:static修饰的变量我们称之为“静态变量”,静态变量是存储在方法区中的。我们都知道JAVA程序是先编译后运行的
    编译期:.java 源文件 ------>  .class字节码文件
    运行期:JVM加载并运行.class字节码文件
    其中.class字节码也是存储在方法区中的,所以程序首先处理的是方法区里面的东西(这个地方是我个人理解)
    需要注意的是“静态变量”在方法区中只有一份,也就是数据只有一份。
    class Test{
      public static void main(String[] args){
        Aoo a = new Aoo();
        Aoo b = new Aoo();
        Aoo c = new Aoo();
    /*
          输出结果:
          static a: 2,b:2
          static a: 3,b:2
          static a: 4,b:2
          

        */    


      }


    }
    class Aoo{
      public static int a = 1;
      int b = 1;
      Aoo(){
        a++;
        b++;
        System.out.println("static a: "+ a+",b:"+b);

      }

    }


    2)static修饰方法
    @简述:这种实际开发中用的比较少,但是也有。
    适用场合:当一个方法的使用的结果只与参数有关而与对象无关时
    import java.util.Arrays;
    class T{
      public static void main(String[] args){
          
          int[] arr = {1,1,12,2,333,3,};
          int[] arr1 = {2,2,1,2,2,2,3,4,5};
          Arrays.sort(arr);//结果只与参数有关,而与对象无关
          Arrays.sort(arr1);

      }


    }
    3)static静态块
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    Fist day
  • 相关阅读:
    hdoj:2033
    hdoj:2032
    hdoj:2031
    hdoj:2029
    hdoj:2028
    hdoj:2027
    hdoj:2024
    hdoj:2023
    hdoj:2022
    hdoj:题目分类
  • 原文地址:https://www.cnblogs.com/NULL-ROOT/p/9657062.html
Copyright © 2011-2022 走看看