0
点赞
收藏
分享

微信扫一扫

参加培训班转行能行吗,知识总结3

西街小学的王 2022-04-05 阅读 84
java
  1. 什么是类?什么是对象?

  • 现实生活中是由很多很多对象组成的,基于对象抽出了类

  • 对象:软件中真实存在的单个个体/东西

    类:类别/类型,代表一类个体

    类是对象的模子,对象是类的具体的实例

    类中可以包含:

    对象的属性/特征-----------------------成员变量
    对象的行为/动作-----------------------方法
    一个类可以创建多个对象
    例子:

    ________________________________________________________________________

  1. 方法的重载(overload/overloading):---------------更加方便用户的访

  • 发生在同一类中,方法名相同,参数列表不同

  • 编译器在编译时会

    ublic class OverloadDemo {
        public static void main(String[] args) {
            Aoo o = new Aoo();
            o.show(); //编译器根据方法的签名自动绑定方法
            o.show("zhangsan");
            o.show(25);
            o.show("zhangsan",25);
            o.show(25,"zhangsan");
        }
    }
    class Aoo{
        void show(){}
        void show(String name){}
        void show(int age){}
        void show(String name,int age){}
        void show(int age,String name){}
        //int show(){ return 1;} //编译错误,重载与返回值类型无关
        //void show(String address){} //编译错误,重载与参数名称无关
    }
    

    根据方法的签名自动绑定方法

    public class Test {
        public static void main(String[] args) {
            //创建对象
            Students mingren = new Students("鸣人", 28, "木叶");//
            //调用方法
            mingren.show();
            mingren.show("卡卡西",35);
        }
    }
    /**创建一个Students类*/
    class Students {
        //成员变量
        String name;
        int age;
        String address;
        /**构造学生类,带参*/
        Students(String name, int age, String address) {
            this.name = name;
            this.age = age;
            this.address = address;
        }
       /**方法*/
        public void show() {
            System.out.println("我的名字叫:" + name + ",年纪:" + age + ",地址:" + address + "。");
        }
        /**重载方法*/
        void show(String name,int age){
            System.out.println("他的名字:"+name+"年纪为"+age);
        }
      }
    

    构造方法:构造函数、构造器、构建器---------复用给成员变量赋初值代码(如上图)
    作用:给成员变量赋初始值
    与类同名,没有返回值类型(连void都没有)
    在创建(new)对象时被自动调用
    若自己不写构造方法,则编译器默认提供一个无参构造方法,若自己写了构造方法,则不再默认提供
    构造方法可以重载
    this:指代当前对象,哪个对象调用方法它指的就是哪个对象
    ​ 只能用在方法中,方法中访问成员变量之前默认有个this.
    this的用法:
    this.成员变量名-------------访问成员变量

    成员变量与局部变量同名时,若想访问成员变量则this不能省略

  • this.方法名()-----------------调用方法(了解)

  • this()---------------------------调用构造方法(了解)

  • null:表示空,没有指向任何对象
    若引用的值为null,则该引用不能进行任何点操作了,
    若操作则发生NullPointerException空指针异常

  • 内存管理:由JVM来管理的

    堆:new出来的对象(包括成员变量)
    栈:局部变量(包括方法的参数)
    成员变量:写在类中,方法外--------有默认值
    局部变量:方法中------------------------没有默认值

    数组也是一个对象,所以数组对象也存储在堆中,
    将数组的元素当作成员变量一并存储在堆中

    内存图:

     引用类型数组:

  • 与基本类型数组的区别:
    • 给数组元素赋值必须new一下
    • 若想访问对象数据必须通过数组元素打点
      Student[] stus = new Student[3]; //创建Student数组对象
      stus[0] = new Student("zhangsan",25,"LF"); //创建Student对象
      stus[1] = new Student("lisi",26,"JMS");
      stus[2] = new Student("wangwu",24,"SD");
      System.out.println(stus[0].name); //输出第1个学生的名字
      stus[1].age = 28; //修改第2个学生的年龄为28
      stus[2].sayHi(); //第3个学生跟大家问好
      for(int i=0;i<stus.length;i++){ //遍历所有学生
        System.out.println(stus[i].name); //输出每个学生的名字
        stus[i].sayHi(); //每个学生跟大家问好
      }
      

       ____________________________________________________________

    •  继承:
      - 作用:代码复用
      - 通过extends来实现继承
      - 超类/父类:共有的属性和行为
      派生类/子类:特有的属性和行为
      - 派生类既能访问自己的,也能访问超类,但是超类不能访问派生类的
      - 一个超类可以有多个派生类,一个派生类只能有一个超类---------单一继承
      - 具有传递性
      - java规定:构造派生类之前必须先构造超类
      - 在派生类的构造方法中若没有调用超类的构造方法,则默认super()调用超类的无参构造方法
      - 在派生类的构造方法中若自己调用了超类的构造方法,则不再默认提供
      > super()调用超类构造方法,必须位于派生类构造方法的第1行

      super:指代当前对象的超类对象
      super的用法:
      super.成员变量名---------------------访问超类的成员变量
      super.方法名()-------------------------调用超类的方法--------------明天下午讲
      super()-----------------------------------调用超类的构造方法
       

      package homework328;
      //超类
      public class Teacher {
          String name;
          int age;
          Teacher(String name,int age){  //构造
              this.name=name;
              this.age =age;
          }
          public  int num(int num1,int num2){//有返回值有参方法
             int num3=num1+num2;
             return num3;
          }
          public void show(){
              System.out.println("我的名字叫:"+name+"年龄:"+age);//普通方法
          }
      }
      __________________________________________
      //子类
      package homework328;
      
      public class Student  extends  Teacher{
                 int num1;//特有属性
          Student(String name, int age,int num1) {  //子类构造
             super(name, age);
             this.num1=num1;
           }
      
          public void num() {
              super.num(33,33);  //用超类方法
             super.show();
          }
      
        @Override
          public void show() {   //重写超类show方法
              System.out.println("帅气");
          }
      }
      
      ___________________________________________________________
      //运行结果
      public class Test {
          public static void main(String[] args) {
              Teacher[] teachers= new Teacher[3];
              teachers[0]= new Teacher("纲手",29);
              teachers[0].show();
              System.out.println("求和"+teachers[0].num(4,4));
              teachers[1] = new Student("牛逼",33,00);
              System.out.println("22+33="+teachers[1].num(22,33));
              teachers[1].show();
      ___________________________
      我的名字叫:纲手年龄:29
      求和8
      22+33=55
      帅气
      ______________________________
          }
      }

举报

相关推荐

0 条评论