zoukankan      html  css  js  c++  java
  • 面向对象(1)

    面向对象含义

    Java的核心思想就是OOP(面向对象编程)

    OO:面向对象

    面向过程:线性思维

    面向对象:分类思维

    面向过程和面向对象不可分割,面向对象相当于一个框架,面向过程相当于具体执行流程

    抽象:把共性抽取出来 抽"像"

    方法的定义及调用

    静态方法:加static 的方法

    静态方法可直接通过类名进行调用

    非静态方法需要把类进行实例化

    new Student()代表把类实例化了,.say()相当于调用了其中的方法

    一般形象的写为如下方式:

    Student student = new Student(); 快捷键:new Student()+alt+enter

    public class Demo1 {
        //main方法    用于启动当前程序
        public static void main(String[] args) {
    
        }
        
        //static是和类一起加载的,即类存在的时候它就存在了
        public static void a(){
            b();    //一个已经存在的调用不存在的会报错,所以这里调用b()的时候会报错
        }
    
        //b()是类实例化之后才存在的
        public void b(){
    
        }
    
    }
    

    方法中,实际参数和形式参数的类型要对应

    值传递和引用传递:

    Java中都是值传递

    //值传递   只是把值传给了形参
    public class Demo2 {
        public static void main(String[] args) {
            int a = 1;
            System.out.println(a);   //1
    
            Demo2.change(a);
            System.out.println(a);   //1
            //因为方法中的形参并没有返回一个结果,它的返回值为空
        }
    
        //返回值为空
        public static void change(int a){
            a = 10;
        }
    }
    
    //引用传递   一般是传递一个对象   本质还是值传递
    //一个类里面只能有一个public class,但是可以有多个class
    public class Demo3 {
        public static void main(String[] args) {
            Person person = new Person();
            System.out.println(person.name);   //null
    
            Demo3.change(person);
            System.out.println(person.name);
    
    
        }
    
        public static void change(Person person){
            //Person是一个对象,指向Person person = new Person();  这是一个具体的人,可以改变属性
            //本质还是在传递值,把xg传递给了对象的属性
            person.name = "xg";
        }
    
    }
    
    class Person{
        String name;
    }
    

    类与对象

    构造器

    在IDEA下查看编译后的class文件

    可以观察到在class文件中默认添加了一个方法,且这个方法没有返回值

    进行debug调试发现,构造器走完了才生成对象,输出person.name

    alt + insert ---> Constructor生成构造器

    选择Select None 生成无参构造函数

    按住ctrl可进行多选

    构造器:

    1. 和类名相同
    2. 没有返回值

    作用:

    1. new 本质是在调用构造方法
    2. 初始化对象的值

    注意点:定义的有参构造,若想使用无参构造,需显示定义

    以类的方式组织代码,以对象的方式封装数据

    创建对象内存分析

    总结

    1. 类与对象

      类是一个模板,抽象的,对象是一个具体的实例

    2. 方法

      定义、调用

    3. 对象的引用

      引用类型:除开基本类型(8)之外的

      对象是通过引用来操作的,就是内存栈中的,真实对象是在堆里面的(引用就是指向对象的一个地址)

    4. 属性:字段Field 成员变量

    ​ 默认初始化:

    ​ 数字:0 0.0

    ​ char:u000

    ​ boolean: false

    ​ 引用:null

    除开基本类型之外的统统为null

    ​ 修饰符 属性类型 属性名 = 属性值;

    1. 对象的创建和使用

      --必须使用new 关键字创建对象,创建对象还需要有构造器

    ​ --对象的属性 xg.name

    ​ --对象的方法 xg.sleep()

    1. 类(类中只有这2个):

      静态的属性 属性

      动态的行为 方法

  • 相关阅读:
    mac os programming
    Rejecting Good Engineers?
    Do Undergrads in MIT Struggle to Obtain Good Grades?
    Go to industry?
    LaTex Tricks
    Convert jupyter notebooks to python files
    How to get gradients with respect to the inputs in pytorch
    Uninstall cuda 9.1 and install cuda 8.0
    How to edit codes on the server which runs jupyter notebook using your pc's bwroser
    Leetcode No.94 Binary Tree Inorder Traversal二叉树中序遍历(c++实现)
  • 原文地址:https://www.cnblogs.com/xgbbd/p/13500712.html
Copyright © 2011-2022 走看看