zoukankan      html  css  js  c++  java
  • Java面向对象的总结

    面向对象的程序设计

    1.面向对象

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

    比喻:也就是说类是没有数据的,给了数据之后的类就是对象

    封装
    继承
    多态

    2.方法

    a.一个方法只有一个返回值,只有一个return 语句。

    b.比较静态方法和非静态方法

    public class StaticF {//一个静态的方法,可以直接通过类名调用
        public static int add(int a,int b){
            return a+b;
        }
    }
    public class NotStatic {//不是静态的方法必须通过实例化的对象调用
        public int add(int a ,int b){
            return a+b;
        }
    }
    public static void main(String[] args) {
            int a = 19;
            int b = 21;
            System.out.println(StaticF.add(a,b));//静态方法
            System.out.println(new NotStatic().add(a,b));//非静态方法
    }
    

    c.值传递和引用传递

    值传递

    public static void main(String[] args) {
            String name = "JHJ";
            setName(name);
            System.out.println(name);//结果仍然是JHJ
        }
        public static void setName(String name){
            name = "LHH";
        }
    

    值传递:虽然把name放到了setName里面,但是传进去的是name所指向的内容,而不是name引用,通俗点说:就是李白拿了一个成绩考了60,他复印了一份成绩单,现在他把复印的那份成绩单成绩改成了100。但是李白的成绩还是60 。他是把值(成绩单)改了没用。得改成绩系统才行。

    引用传递

    public class ReferenceDeliver {
        public static void ChangeName(Student student){
            student.name = "LHH";
        }
        public static void main(String[] args) {
            Student stu1 = new Student("JHJ",14);
            ChangeName(stu1);
            System.out.println(stu1.name);
        }
    }
    class Student{
        String name;
        int age;
        public Student(String name,int age){
            this.name = name;
            this.age = age;
        }
    }
    

    引用传递:对象里面的属性修改,属于引用的这个对象。是会被修改的,因为对象是不可分割的,是属于对象的一部分

    3.类和对象的关系

    类里面只有属性和方法。

    a.类的默认初始化。

    类的默认初始化就是把类的所有属性都初始化出对应默认值

    4.构造器

    new 关键字的本质是调用构造器

    一个类即使什么都不写都有一个默认的构造方法(不显示出来)
    但是一旦定义了有参数的构造器,就必须显式的写出来
    构造器与类名相同,没有返回值

    IDEA添加构造器的快捷键 :Ctrl+insert

    public class Teacher {
        String name;
        int age;
        public Teacher() {  }//如果定义了有参数的,必须写出无参数的情况
        public Teacher(String name, int age) {
            this.name = name;
            this.age = age;
        }
        public Teacher(int age) {
            this.age = age;
        }
        public Teacher(String name) {
            this.name = name;
        }
    }
    

    5.对象的内存分析

    栈:就是相当于一个目录,如果都是存在堆里面,那你想要找一个东西就太慢了,所以就把引用变量名指向堆中对象,相当于我们在一本书的目录找到对应章节的页数。、

    堆里面有个方法去,就相当于每一章都有个思维导图解释这一节的细节信息。

    栈:相当于一本书的目录,我们根据目录所指向的页数(地址),可以找到对应的知识点
    堆:相当于一本书的知识点,比较庞大,全塞在栈里面不方便找,所以有个目录(栈)
    方法区:相当于每一章节后面的思维导图,他包括章节的大体信息,但是细节不深。
  • 相关阅读:
    JavaMail入门第四篇 接收邮件
    JavaMail入门第三篇 发送邮件
    JavaMail入门第二篇 创建邮件
    JavaMail入门第一篇 邮件简介及API概述
    Java对象数组
    Mybatis Dao层注解及XML组合Dao的开发方式
    spring mvc常用注解总结
    组建自己的局域网(可以将PC机实现为服务器)
    局域网 FTP建立,搭建一个简易的局域网服务器
    公司局域网搭建
  • 原文地址:https://www.cnblogs.com/li33/p/12709765.html
Copyright © 2011-2022 走看看