面向对象(上)

面向过程:我打算列个计划表一步一步来

面向对象:我喜欢先分析分类,把复杂的问题简单化

1.什么是面向对象!!?

面向对象的本质就是:以类的方式组织代码,以对象的方式组织数据

  • 封装
  • 继承
  • 多态

类&对象:对象是类的具体事物,类是对象的抽象概念

类即是对象的模板.....

2.方法回顾

定义一个方法:

public class Demo4 {
public static void main(String[] args){ }
/*
修饰符 返回值类型 方法名(...){
//代码体
return 执行结果;
}
*/ //定义一个add方法
public static int add(int a,int b){
return a+b;//return 代表结束
}
}

3.方法调用

区分静态方法:加入static为静态方法反之为非静态方法

public class Demo4 {

    public static void main(String[] args){
//调用静态方法
say2(); //调用非静态方法 先要用new创建类的对象 通过对象调用
//say1(); error!!!
Demo4 d4 = new Demo4();
d4.say1();
//d4.say2(); error!!!
} //实例化后才存在
public void say1(){
System.out.println("Static");
} //和类一起加载
public static void say2(){
System.out.println("No static");
} public static void say3(){
say1(); //error!!!!
} }

4.值传递和引用传递

值传递:传递后是传递参数的复制版本

引用传递:传递后可以通过传递的参数修改传递的变量

//值传递
public class Demo4 { public static void main(String[] args){
int b = 5;
change(b);
System.out.println(b); //5
} public static void change(int a){
a = 10;
} }
//引用传递
public class Demo4 { public static void main(String[] args){
Student student = new Student(); System.out.println(student.name); //Null
change(student);
System.out.println(student.name); //Hxk
} public static void change(Student stu){
stu.name = "Hxk";
} } //定义一个student类
class Student{
String name; }

总结:在Java中如果传递的是变量即为值传递,如果是对象就是引用传递(实际分析的话还是值传递)

Java都是值传递

5.类与对象的关系

    • 类是一种抽象的数据类型 它是对一类事物的具体描述/定义,但不代表某一类具体事物
  • 对象
    • 对象是抽象概念的具体实例

如何创建一个对象??


new:使用new关键词创建对象的时候,除了分配内存外还会给创建好的对象就行默认的初始化,以及对构造器的调用

构造器:类中的构造器也称构造方法,是就行创建对象时必须调用的

  • 1.必须和类的名字相同
  • 2.必须没有返回类型 void也不行

构造器必须掌握

//App.java
package pro;
import pro.Student; public class App {
public static void main(String[] args){ //类实例化后会返回自己的对象!!!
Student stu = new Student(); System.out.println(stu.name); //null
stu.name = "Xiao Hong";
System.out.println(stu.name); //Xiao Hong
}
}
//Student.java
package pro; public class Student {
String name;
int age; public void run(){
System.out.println(name+" is running.");
}
}

6.构造器详解

构造器作用

​ 1.使用new关键字本质调用构造器(不写系统默认创建)

​ 2.用来初始化值

​ 3.一旦显示了有参构造,无参数构造就必须显示定义

//App.java
package pro;
import pro.Person; public class App {
public static void main(String[] args){
Person per = new Person("Hxk",18);
System.out.println("He name is " + per.name);//Hxk
}
}
//Person.java
package pro; public class Person {
String name = "";
int age = 0;
public Person(String name,int age){
System.out.println("You are creat a person");
this.age = age;
this.name = name;
}
}

零基础入门学习Java课堂笔记 ——day05的更多相关文章

  1. 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...

  2. 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...

  3. 《零基础入门学习Python》【第一版】视频课后答案第001讲

    测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...

  4. 零基础入门学习Python(1)--我和Python的第一次亲密接触

    前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...

  5. 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)

    093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  6. 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现

    088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...

  7. 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则

    080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...

  8. 057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和

    057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和 本文知识点:求整型数组的数组元素的元素值累加和 案例:求整型数 ...

  9. 056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用

    056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用 本文知识点:数组的实际应用 程序开发中如何应用数组? 程序代码及其运行结果: 不同数据类 ...

  10. 055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念

    055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念 本文知识点:数组的概念 数组的声明创建.初始化 在学习数组的声明创建.初始化前,我们可以和之 ...

随机推荐

  1. xapian 搜索引擎介绍与使用入门

    Xapian 是一个开源搜索引擎库,使用 C++ 编写,并提供绑定(bindings )以允许从多种编程语言使用.它是一个高度适应性的工具包,允许开发人员轻松地将高级索引和搜索功能添加到自己的应用程序 ...

  2. <vue 组件 1、组件化基本使用>

    代码结构 组件就是将复杂的功能拆分成简单的块,拆分后的块可以被多处使用. 组件的使用分成三个步骤: 1.创建组件构造器     Vue.extend() 2.注册组件               Vu ...

  3. 08_N叉树的层序遍历

    N叉树的层序遍历 给定一个 N 叉树,返回其节点值的层序遍历.(即从左到右,逐层遍历). 树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例). 示例 1: 输入:root = [ ...

  4. 每天学五分钟 Liunx 0001 | 存储篇:swap

    swap swap ,内存交换空间,它是磁盘上的一块空间,主要作用是为了防止物理内存不足. CPU 从内存中读取数据.当内存的空间不足时, CPU 难以读取到数据,导致程序无法正常工作.所以诞生了 s ...

  5. 【TouxhGFX】集成 之 《Using C code with TouchGFX》

    在TouchGFX中使用C代码 您可能已经知道,TouchGFX是用C ++实现的,而TouchGFX API也是C ++.这意味着至少直接与UI相关的代码必须是C ++代码.但是,并不需要整个系统都 ...

  6. 代码使我头疼之React初学习

    前言 开始了,去年(2020)说要学的React,到现在2021年的12月底了,才来实施--(年底警告!年末总结还没开始写!) 不过前端为啥要学React呢?Vue不是很好用吗?Vue确实很好用,并且 ...

  7. [转帖]一篇来自网络的关于“enqueue”events的简短参考

    https://www.cnblogs.com/lhdz_bj/p/8716701.html 仅供自己和各位同学参考: Enqueue Type Description enq: AD - alloc ...

  8. [转帖]一文读懂 K8s 持久化存储流程

    https://zhuanlan.zhihu.com/p/128552232 作者 | 孙志恒(惠志) 阿里巴巴开发工程师 导读:众所周知,K8s 的持久化存储(Persistent Storage) ...

  9. Python学习之十九_程序运行时间的验证

    Python学习之十九_程序运行时间的验证 背景 最近一段时间比较忙. 而且还遇到了一个lua脚本优化redis访问的场景. 想着自己还在学习python(时断时续) 所以想借着这个场景,学习一下py ...

  10. [转帖]PyCharm无法安装第三方模块,一直提示 updating list:time out 解决办法

    Pycharm无法安装第三方模块解决办法: 1.打开pycharm的项目的venv文件夹 2.打开文件夹目录中的pyvenv文件 3.将文件中的include-system-site-packages ...