码迷,mamicode.com
首页 > 编程语言 > 详细

零基础自学JAVASE Part7

时间:2021-06-02 14:17:00      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:system   --   结构   复习   抽象   font   为我   品牌   dem   

前言

之前都是框架类的知识,记住了以后开始补充其中的血肉,相当于是丰富其中的细节信息

确实初看一遍面向对象还是简单,但是落到细节上还是要反复推敲思考的

 

1. main方法中的array(数组)

String [] arr :用来获取键盘录入的参数

在写好.java代码后,首先要命令行中运行 >javac 文件名.java 进行编译

然后再用 >java 文件名 运行

其实运行的后面还可以传入数组参数的

例如: java HelloWorld a b c

如果想在eclipse中的控制台利用main方法传入参数,右键->run as->run configurations->Arguments

 

2. 面向对象

2.1 

面向对象概念:
  (万物皆对象)----- think In java , everything in an object
    把现实中的事物抽象成由一系列属性和行为组成的结构体,每个结构体都有属于自
  己的功能,在软件开发的过程中,通过对不同功能的结构体进行组合,完成整个软件功
  能。且结构体可复用。
OO: object – oriented  面向对象
  ooa: 面向对象的分析
  ood: 面向对象的设计
  oop: 面向对象的编程(program)
软件的生命周期:
  需求分析
  概要设计
  详细设计
系统开发
  系统测试
  部署
  运行和维护
 
2.2 三大特征
 
封装     继承    多态(抽象) 
 
2.3 类和对象的关系
类: 一种 (引用)数据类型, 自定义的一种类型(修改class的名字可以在类名上直接修改,然后修复即可)
对象: 具体存在的事物,符合类的定义特征
类的定义:
  class 类名{
    //属性, 变量
    
    //方法
  }
如何创建对象:
  类名 对象名 = new 类名();
给对象赋值:
  对象名.属性 = 要赋的值;
例子:
public class Student {
    String name; //属性-------变量(成员变量)  
    char gender;
    double score;
    //行为--------方法
    public void chuDuiXiang() {
        System.out.println("love cason");
    }
}

测试类中创建对象:

public class StudentDemo {
    public static void main(String[] args) {
        Student a = new Student();
        System.out.println(a.score);
        a.name = "张三";
        a.gender = ‘男‘;
        a.score = 23.64;
        System.out.println(a.name);
        a.chuDuiXiang();
    }
}

提供一个练习题:

  创建一个 Teacher 类,包含属性: 姓名,性别,年龄; 定义一个讲课的行为,和自我介绍的
方法(用于打印所有的属性值),创建三个老师对象创建到数组中.
public class Teacher{
    String name;
    int age;
    char gender;
    //成员方法里面:没有static修饰的方法
    public void teach() {
        System.out.println("开始上课!");
    }
    public void introduce() {
        System.out.println("我叫"+name+"今年"+age+"岁");
    }
}

测试:

public class TeacherDemo {
    public static void main(String[] args) {
        Teacher lisi = new Teacher();
        lisi.name = "李四";
        lisi.age = 20;
        
        Teacher wangwu = new Teacher();
        wangwu.name = "王五";
        wangwu.age = 22;
        
        Teacher zhaoliu = new Teacher();
        zhaoliu.name = "赵六";
        zhaoliu.age = 24;
        

//        //数组
//        int[] arr = new int[3];
//        arr[0] = 10;
//        arr[1] = 20;

        // 动态方法
        Teacher[] arr1 = new Teacher[3];
        arr1[0] = lisi;
        arr1[1] = wangwu;
        arr1[2] = zhaoliu;
        
        //静态
        Teacher [] arr2 = new Teacher[] {lisi,wangwu,zhaoliu};
        
        for (int i =0; i < arr1.length; i++) {
            Teacher teacher_now = arr1[i];
            teacher_now.introduce();
            System.out.println(teacher_now.name);
        }
    }
}

 

2.4 内存分析
栈(stack): 方法的执行, 局部变量, 没有初始值
堆: new 出来的东西
  有初始值,基本数据类型初始值就是默认值,引用数据类型初始值为 null
方法区:
  class 区: 所有字节码文件(.class 文件),类加载的时候会把相关字节码文件加载到 class 区中,同时把用 static 修饰的东西存入到静态区
  static 区: 用 static 修饰的东西
技术图片

 

 

2.5  成员变量和局部变量

成员变量: 定义在类中方法外的变量,没有 static 修饰;存放在堆内存中,有初始值;随着对象的
    产生而产生,随着对象的消失而消失
局部变量: 定义在方法中或者是方法的参数列表上的变量;存放在栈内存中,没有初始值;随
    着方法的调用而产生,随着方法的结束而消失
 
 
2.6 匿名对象
匿名对象: 没有名字的对象
  Teacher t = new Teacher();//这是有名字的对象,对象名叫 t
  t.teach();//调用 teach 方法
 
  new Teacher();// 这就叫匿名对象
  //匿名对象调用方法
  new Teacher().teach();
2.7  形参和实参
在之前的java复习01中有提到自己的理解。
形参: 定义方法时方法参数列表上的变量
实参: 调用方法时传进去的具体值;
注意:
基本数据类型做参数形参的改变不影响实参的值
引用数据类型做参数,形参的改变影响实参的值(String 和包装类除外)
 
2.8 封装
封装概述:
  是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
  隐藏实现细节,提供公共的访问方式
  提高了代码的复用性
  提高安全性。
封装原则:
  将不需要对外提供的内容都隐藏起来。
  把属性隐藏,提供公共方法对其访问。
实现封装的步骤:
  成员变量私有化:用 private 修饰成员变量:
权限修饰符:
  public: 修饰类,方法,变量;可在本项目中访问,跨包需要导包
  (default): 修饰类,方法,变量 ,什么都不加, 只能在本包中访问
  private: 修饰方法,变量;被 private 修饰的方法和变量只能在本类中访问
提供 get 和 set
例子:
public class Mobile {
    private String brand;
    private String type;
    private double price;
    private String color;

    // 品牌方法
    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getBrand() {
        return brand;
    }

    // 型号
    public void setType(String type) {
        this.type = type;
    }

    public String getType() {
        return type;
    }

    // 价格
    public void setPrice(double price) {
        this.price = price;
    }

    public double getPrice() {
        return price;
    }

    // 颜色
    public void setColor(String color) {
        this.color = color;
    }

    public String getColor() {
        return color;
    }

    //
    public void introduce() {
        System.out.println("这个手机的品牌是:" + brand + "\n" + "这个手机的价格是:" + price + "\n");

    }

}

注:this 是指当局部变量和成员变量重名的时候,加上this加以区分,this指代的是成员变量。

 
2.9 构造方法
构造方法,也叫构造器(Constructor), 是类中比较特殊的一种方法
格式:
  修饰符 类名(参数列表){
    方法体;
  }
注意事项
  1. 方法名和类名相同
  2. 没有返回值,连 void 都没有
  3. 构造方法是可以重载的
  4. 如果我们不在类中创建构造方法,那么系统会为我们自动生成无参数的构造方法;
  如果我们在类中自己写了构造方法,那么系统则不再为我们生成
有参构造方法和无参构造方法:
public class YuanGong {
    private String name;
    private double age;
    private String job;
    private Double salary;

    // 有参构造方法
    public YuanGong(String name, double age, String job, Double salary) {
        this.name = name;
        this.age = age; 
        this.job = job;
        this.salary = salary;
    }

  //无参构造方法
    public YuanGong() {
    }
// 姓名 public void setName(String name) { this.name = name; } public String getName() { return name; } // 年龄 public void setAge(double age) { this.age = age; } public Double getAge() { return age; } // 工作 public void setJob(String job) { this.job = job; } public String getJob() { return job; } // 薪水 public void setSalary(Double salary) { this.salary = salary; } public Double getSalary() { return salary; } public void showinfo() { System.out.println("员工:" + name); } }

 

2.10 总结组件

成员变量
静态变量
局部变量
成员方法
静态方法
构造方法

技术图片

 

2.11 赋值

1)  对象名.属性名 = 要赋的值

  Teacher t = new Teacher();
  t.name = “zhang san”;
2)  使用 set 方法:
  t.setName(“李四”);
3)  使用构造方法
  Teacher t = new Teacher(“赵六”,19);
  class Teacher{
    public Teacher(String name,int age){
      this.name = name;
      this.age = age;
    }
  } 

 

总结

面向对象和构造方法需要花费多一点的时间去理解,方便后面继续的深入

刚学完第一遍的时候感觉还是清楚的,后面的概念一多久容易记混

需要不断的复习和自己敲敲写写才可以

加油

 

零基础自学JAVASE Part7

标签:system   --   结构   复习   抽象   font   为我   品牌   dem   

原文地址:https://www.cnblogs.com/gzqcason/p/14821696.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!