零基础自学JAVASE Part7

前言

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

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

 

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 修饰的东西 零基础自学JAVASE Part7

 

 

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 总结组件

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

零基础自学JAVASE Part7

 

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;     }   } 

 

总结

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

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

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

加油

 

上一篇:数组和元素


下一篇:22. 元类与单例模式