Java随堂小记06

面向对象基础

1、面向对象编程:oop

2、面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据

3、对象是具体的实例,类是抽象的,是对象的模板

4、 类 = 属性 + 方法

5、三大特性:封装、继承、多态

6、breakreturn的区别:
break用于跳出switch和结束循环
return用于结束方法体
在这里插入图片描述

方法

静态方法:直接通过类名去调用方法

public class Dem01 {
	public static void main(String[] args) {
    Student.say();
	}
}
public class Student {
    public static void say(){
        System.out.println("学生在说话");
    }
}  

非静态方法:先实例化对象,通过对象调用方法

public class Dem01 {
    public static void main(String[] args) {
    Student student = new Student();
    student.say();
    }
}
public class Student {
    public void say(){
        System.out.println("学生在说话");
    }
}

值传递和引用传递

值传递:
方法调用时,实参把它的值传递给对应的形参,函数接收的是原始值的一个copy,此时内存中存在两个相等的基本类型,即实参和形参,后面方法中的操作都是对形参这个值的修改,不影响实参的值。

结论:当方法参数为基本类型时,是将外部变量值拷贝到局部变量中而进行逻辑处理的,故方法是不能修改原基本变量的。

引用传递:
也称为传地址。方法调用时,实参的引用(地址,而不是参数的值)被传递给方法中相对应的形参,函数接收的是原始值的内存地址;
在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象。

结论:对于引用类型的方法参数,会将外部变量的引用地址,复制一份到方法的局部变量中,两个地址指向同一个对象。

类与对象

Person类:抽象的

package www.Dongyi.oop;

public class Person {
    //属性
    String name;
    int age;
    //方法
    public void richMan(){
        System.out.println(this.name+"在赚钱,并且成为了富豪");
        System.out.println("他才"+this.age+"岁");
    }
}

Demo01测试类

package www.Dongyi.oop;

public class Demo1 {
    public static void main(String[] args) {
        Person p1= new Person();
        Person p2= new Person();
        p1.name="张三";
        p1.age=4;
        p2.name="李四";
        p2.age=5;

        //直接在main方法里调用
        System.out.println(p1.name+" "+p1.age);
        System.out.println(p2.name+" "+p2.age);
        System.out.println("============================");

        //通过实例化对象来调用方法
        p1.richMan();
        p2.richMan();

    }
}

构造器

1、一个类即使什么也不写,也会存在一个默认构造方法
2、显示定义构造器
(1)new的本质在调用构造方法
(2)初始化对象的值
(3)一旦定义了有参构造。无参就必须显式定义
3、快捷键 alt+insert
在这里插入图片描述
有参构造:
在这里插入图片描述
在这里插入图片描述
无参构造:
在这里插入图片描述
在这里插入图片描述
完整代码:

package www.Dongyi.oop;

public class Person2 {
    String name;

    public Person2() {
    }

    public Person2(String name) {
        this.name = name;
    }
}
package www.Dongyi.oop;

public class Application {
    public static void main(String[] args) {
        Person2 person2 = new Person2("阿董");
        System.out.println(person2.name);

    }
}

alt+insert失效问题

1、File–>settings
在这里插入图片描述
2、依次安装Gherkin—>Cucumber for Java—>Cucumber for Groovy
在这里插入图片描述
3、选好之后重启IDER

4、若依旧失效,关闭数字键盘(num lk),重新按下快捷键alt+insert,就可以正常使用了

创建对象内存分析

public class Pet {
    public String name;
    public int age;

    //无参构造


    public void shout(){
        System.out.println("叫了一声");
    }
}
public class Application {
    public static void main(String[] args) {

        Pet dog = new Pet();
        dog.name = "旺财";
        dog.age = 2;
        dog.shout();

        System.out.println(dog.name+" "+dog.age);

        Pet cat = new Pet();

    }
}

对象是通过引用来操作的:栈---->堆(地址),真正操作的是堆


版权声明:本文为weixin_48245161原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。