零基础入门学习Java课堂笔记 ——day05
面向对象(上)
面向过程:我打算列个计划表一步一步来
面向对象:我喜欢先分析分类,把复杂的问题简单化
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的更多相关文章
- 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案
国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...
- 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案
初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...
- 《零基础入门学习Python》【第一版】视频课后答案第001讲
测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...
- 零基础入门学习Python(1)--我和Python的第一次亲密接触
前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...
- 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封装 ...
- 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现
088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
- 057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和
057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和 本文知识点:求整型数组的数组元素的元素值累加和 案例:求整型数 ...
- 056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用
056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用 本文知识点:数组的实际应用 程序开发中如何应用数组? 程序代码及其运行结果: 不同数据类 ...
- 055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念
055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念 本文知识点:数组的概念 数组的声明创建.初始化 在学习数组的声明创建.初始化前,我们可以和之 ...
随机推荐
- vue 状态管理 四、Action用法
系列导航 vue 状态管理 一.状态管理概念和基本结构 vue 状态管理 二.状态管理的基本使用 vue 状态管理 三.Mutations和Getters用法 vue 状态管理 四.Action用法 ...
- ECharts大屏数据可视化展板项目 适配rem
1.在utils文件夹里新建一个rem.js 2.main.js中引入rem.js 3.vscode中下载cssrem插件,配置Root Font Size大小,为1920/20 = 96. 重启vs ...
- spring--JDK动态代理和CGLIB代理的区别
JDK 动态代理和 CGLIB 代理是 Java 中常用的两种动态代理实现方式,它们各有特点和适用场景: JDK 动态代理: JDK 动态代理是基于接口的代理方式,它使用 Java 反射机制来创建代理 ...
- Java之利用openCsv导出csv文件
当时导入的时候用的openCsv,那么导出的时候自然也是用这个,查了好多资料才找到解决方案,下面记录一下实现过程. 1.Controller层: /** * 导出csv文件 */ @RequestMa ...
- 应用程序使用统计信息 – .NET CORE(C#) WPF界面设计
应用程序使用统计信息 - .NET CORE(C#) WPF界面设计 首发文章地址:https://dotnet9.com/10546.html 关键功能点 抽屉式菜单 圆形进度条 Demo演示: 1 ...
- Oracle AWR学习之二-利用ChatGPT编写一键获取AWR报告的脚本
Oracle AWR学习之二-ChatGPT提升效率之n 背景 之前生成awr报告比较麻烦, 想着能够一键生成. 再辅以部分shell或者是python处理就可以进行细致的分析. 这一块其实还是比较简 ...
- 【转帖】SRE 高延迟问题的罪魁祸首 System.gc()
https://www.infoq.cn/article/lXTRgYb9ecVBu*72fT7O jstact -gccause pid 3000 30 01 案例一: 某日,支付平台的开发人员找到 ...
- [转帖]自动化运维:一键自动化脚本-shell
https://www.cnblogs.com/luoahong/articles/8456203.html shell函数 1.分别在服务器和客户端上创建www用户 1 2 useradd www ...
- Linux 通过yum 方式离线下载依赖rpm包的操作步骤
离线下载依赖rpm包的方法 1.简单获取依赖关系 yum deplist rpm-build 注意 deplist 为依赖项目 我在arm 上面简单跑一下结果为 package: rpm-build- ...
- echarts设置暂无数据
场景描述 我们在项目中,很多时候都会使用echarts进行数据展示. 当没有数据的时候,echarts的展示就会特别的难看. 这个时候我们就会优化界面的显示,在echarts中展示暂无数据. 有很多中 ...