面向对象的程序设计

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.对象的内存分析

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

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

栈:相当于一本书的目录,我们根据目录所指向的页数(地址),可以找到对应的知识点
堆:相当于一本书的知识点,比较庞大,全塞在栈里面不方便找,所以有个目录(栈)
方法区:相当于每一章节后面的思维导图,他包括章节的大体信息,但是细节不深。

最新文章

  1. 网络数据包收发流程(二):不配置NAPI的情况
  2. KMP--Cyclic Nacklace
  3. pace.js和NProgress.js两个加载进度插件的一点小总结
  4. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:2.3.1:jar (default-jar) on
  5. 深入理解Redis中的主键失效及其实现机制
  6. winform 猜猜看 分类: WinForm 2014-08-21 14:12 267人阅读 评论(0) 收藏
  7. Spring 源码解读 推荐流程
  8. table中td的宽度不随文字变宽
  9. Seafile安装踩坑
  10. jmeter 接口重放(投票活动)
  11. CentOs环境下给PHP7.0安装fileinfo扩展
  12. 从零开始学习PYTHON3讲义(十六)(连载完)学习资源包下载
  13. 电脑一键U盘启动快捷键
  14. Visual Studio 2013 更新 NuGet 包管理器
  15. 【转】64位系统下无法使用libpam-mysql的md5
  16. Github安卓开源项目编译运行
  17. memset memcpy
  18. 软工作业No.1。Java实现WC.exe
  19. 测试oracle表空间自动扩展
  20. 【leetcode 简单】 第九十九题 字符串相加

热门文章

  1. Fiddler2 下断点修改HTTP报文
  2. Swift 4.0 字符串(String)学习
  3. MySQL笔记(6)-- SQL更新语句日志系统流程
  4. 使用SpringBoot + JavaMailSender 发送邮件报错 Mail server connection failed;Could not connect to SMTP host
  5. x86汇编指令集大全(带注释)
  6. Cisco 综合配置(一)
  7. Java的集合框架综述
  8. 10行Python代码计算汽车数量
  9. 热点 | github近期热点项目汇总
  10. Django之extra过滤