面向对象(上)

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

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

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. Go 疑难杂症汇总

    1. revision v0.0.0: unknown revision v0.0.0 go get -u github.com/uudashr/gopkgs/cmd/gopkgs 报错: [root ...

  2. 玛珍,玛珍,margin!

    最近在整理巩固面试相关的资料,又看到了熟悉的老朋友:margin,当时觉得其读起来很亲切,现在又发现很多遗忘的知识点. 了解margin margin,译为"外边缘",在CSS作为 ...

  3. 基于AHB_BUS的eFlash控制器的微架构设计

    eFlash微架构设计 1.回顾架构设计 2.Flash时序仿真 2.1 ahb_flashc项目目录 docs rtl sim tb model 2.2 docs 架构设计文档 微架构设计文档 集成 ...

  4. MyBatis04——使用注解开发

    使用注解开发 MyBatis3提供了新的基于注解的配置,但是MyBatis映射并不能用注解来构建. sql类型主要分成: @select @update @insert @delete 注意:利用注解 ...

  5. [转帖]SQL SERVER中隐式转换的一些细节浅析

    https://www.cnblogs.com/kerrycode/p/5853257.html 其实这是一篇没有技术含量的文章,精通SQL优化的请绕道.这个缘起于在优化一个SQL过程中,同事问了我一 ...

  6. [转帖]TiDB 查询优化及调优系列(三)慢查询诊断监控及排查

    https://zhuanlan.zhihu.com/p/509984029   本章节介绍如何利用 TiDB 提供的系统监控诊断工具,对运行负载中的查询进行排查和诊断.除了 上一章节介绍的通过 EX ...

  7. [粘贴]使用 Dumpling 导出数据

    https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#dumpling-%E4%B8%BB%E8%A6%81%E9%80%89%E9%A1 ...

  8. [转帖]nginx上传模块—nginx upload module-

    https://www.cnblogs.com/lidabo/p/4171515.html 一. nginx upload module原理 官方文档: http://www.grid.net.ru/ ...

  9. 【转帖】10个Linux 系统性能监控命令行工具

    引言: 系统一旦跑起来,我们就希望它能够稳定运行,不要宕机,不出现速度变慢.因此,对于Linux 系统管理员来说每天监控和调试 Linux 系统的性能问题是一项繁重却又重要的工作.监控和保持系统启动并 ...

  10. [转帖]010 Linux 文本统计与去重 (wc 和 uniq)

    https://my.oschina.net/u/3113381/blog/5427461 wc 命令一般是作为组合命令的一员与其他命令一同起到统计的作用.而一般情况下使用 wc -l 命令较多. u ...