教学日志:javaSE-面向对象2

一、局部变量和成员变量

package class4.oop1;

/**
 * @Auther: Yu Panpan
 * @Date: 2021/12/10 - 12 - 10 - 14:47
 * @Description: class4.oop1
 * @version: 1.0
 */

/**
 * 变量:
 *      局部变量:
 *          定义:在方法内定义的变量称为局部变量
 *          作用域:从变量定义开始到方法结束
 *          注意:
 *              1、局部变量只能在当前方法中使用,其他地方都不能使用
 *              2、局部变量如果没有使用,只是定义的话,不会报错,但是如果有引用那么必须先进行初始化才能使用
 *              3、局部变量没有默认值,所以在使用之前必须先进行初始化
 *
 *      成员变量:(全局变量)
 *           定义:在方法之外,类内定义的变量称为成员变量
 *           作用域:整个类体都可以访问
 *           注意:
 *              1、成员变量有默认值,系统会根据变量的数据类型默认的给默认值
 *                int-->0    boolean-->false   String-->null
 *
 */
public class VarDemo {

    //属性(成员变量)
    int age = 10;
//    String name;

    //定义方法
    public void show(){
        //局部变量
        String name = "小鑫鑫";
        System.out.println(name);
        int a;
//        System.out.println(a);  错误
        System.out.println(age);
    }

    public void test(){
        System.out.println(age);
        age = 20;
        System.out.println(age);
        //局部变量
        int age = 30;
        System.out.println(age);
    }

    public static void main(String[] args) {
        //创建对象
        VarDemo vd = new VarDemo();
//        vd.show();
//        System.out.println(name); 错误
        System.out.println(vd.age);
        vd.test();
        System.out.println(vd.age);
//        System.out.println(vd.name);
    }

}

二、构造方法

package class4.oop1;

/**
 * @Auther: Yu Panpan
 * @Date: 2021/12/10 - 12 - 10 - 15:55
 * @Description: class4.oop1
 * @version: 1.0
 */

/**
 * 构造方法:
 *     在创建对象的时候默认会调用构造方法,在堆中进行存储,主要目的是为了对成员变量进行初始化操作
 *     语法:
 *         修饰符:4个,后面再讲(public、protected、[default]、private)
 *         返回值:构造方法没有返回值
 *         方法名:构造方法的名称必须和类名保持一致
 *         参数列表:和普通方法一样
 *         方法体:主要是为成员变量进行初始化操作
 *      注意:
 *          1、当程序中没有显示的声明一个构造方法的时候,系统会给你一个默认的不带任何参数的空构造方法来供你创建对象使用
 *          2、当你在程序中显示的声明了一个非空的构造方法,那么java编译器就不会再给你那个空参的构造方法了,
 *              但是这时候你又想用空参的构造方法,那么只有再定义一个构造方法了
 *          3、一个类中可以有多个构造方法
 *
 *   重载(overload):在一个类中可以有多个同名的方法,但是要求方法的参数列表不同
 *         三方面的不同:
 *           1、参数个数不同
 *           2、参数类型不同
 *           3、参数顺序不同
 *
 *           注意:
 *              一般都需要使用构造方法的重载,因为成员变量可能会有很多个,但是我们只需要对部分成员变量进行初始化操作
 */
public class Teacher {

    //属性(成员变量,全局变量)
    String name;
    int age;

    public Teacher(){
        System.out.println("空构造方法被执行了... ...");
    }

    //定义一个构造方法
    public Teacher(String tname,int tage){
        System.out.println("Teacher(String name,int age)被执行了... ...");
        name = tname;
        age = tage;
    }

    public Teacher(int tage,String tname){

    }

    public Teacher(int tage){

    }

    public void test(String name,int age){

    }

    public void test(int age,String name){

    }

    public static void main(String[] args) {
        //创建对象
        Teacher teacher1 = new Teacher();
        teacher1.name = "小鑫鑫";
        teacher1.age = 18;
        System.out.println(teacher1.name);
        System.out.println(teacher1.age);
        Teacher teacher2 = new Teacher("张飞",20);
        System.out.println(teacher2.name);
        System.out.println(teacher2.age);
    }
}

三、练习题

package class4.oop1;

/**
 * @Auther: Yu Panpan
 * @Date: 2021/12/10 - 12 - 10 - 16:51
 * @Description: class4.oop1
 * @version: 1.0
 */
public class Point {

    //属性
    int x;
    int y;

    public Point(){

    }

    //定义构造方法
    public Point(int xx,int yy){
        x = xx;
        y = yy;
    }

    //定义个显示点坐标的方法
    public void show(){
        System.out.println("("  + x + "," + y + ")");
    }

    //定义提供两个坐标的方法
    public void set(int xx,int yy){
        x = xx;
        y = yy;
    }

    //定义计算一个点到另外一个点的距离的方法
    public double calcInstance(Point p){
        return Math.sqrt((p.x-x)*(p.x-x) + (p.y-y)*(p.y-y));
    }

    //交换两个点坐标的值
    public void changePoint(Point p){
        //交换x
        int temp1 = p.x;
        p.x = x;
        x = temp1;
        //交换y
        int temp2 = p.y;
        p.y = y;
        y = temp2;
    }

    public static void main(String[] args) {
//        Point p1 = new Point(3,5);
//        p1.show();
        Point p1 = new Point();
        p1.set(3,5);
        Point p2 = new Point();
        p2.set(6,9);
        p1.show();
        p2.show();
        double result = p1.calcInstance(p2);
        System.out.println(result);
        System.out.println("两个点坐标交换之后的坐标值----------");
        p1.changePoint(p2);
        p1.show();
        p2.show();
    }
}

posted @ 2021-12-10 18:09  jason的java世界  阅读(25)  评论(0编辑  收藏  举报