java第2天:类,对象,封装和构造方法
1 面向对象简述
将 {1,3,45,56,78,90}转化为[1,3,45,56,78,90]
1-2 方法1:面向过程
代码块
public class test {
public static void main(String[] args) {
int[] array = {1,3,45,56,78,90};
// 打印成[1,3,45,56,78,90]
System.out.print("[");
for (int i = 0; i < array.length; i++) {
if(i==array.length-1){
System.out.print(array[array.length-1]+"]");
}
else {
System.out.print(array[i]+",");
}
}
}
}
1-2 方法2:面向对象
代码块
import java.util.Arrays;
public class test {
public static void main(String[] args) {
int[] array = {1,3,45,56,78,90};
// 打印成[1,3,45,56,78,90]
System.out.println(Arrays.toString(array));
}
}
2 面向对象的思想举例
面向对象:把衣服扔进洗衣机
面向过程:自己动手洗衣服
***
3 类和对象的关系
对象是类的实例化
类是抽象的。
对象是类具体的。
***
4 定义一个学生类
public class Student {
int age = 13;
String name = "wangsiyu";
public void study(){
System.out.println("学生要学习");
}
}
1.成员变量是直接定义在类当中,在成员方法的里面
2.成员方法的定义不需要写static
5 对象的创建和使用
5-1第一步:导包
1.通常情况下,一个类并不能直接使用,必须实例化对象后才可以使用。
2.导包的格式: import 包名称.类名称
3.对于和当前类在同一包下,导包语句可以省略不写
5-2 创建对象
格式:类名称 对象名 = new 类名称();
Student stu = new Student();
5-3 对象的使用
成员变量的使用:对象名.成员变量
成员方法的使用:对象名.成员方法();
5-4 实例化上文的学生类
public class Student {
int age = 13;
String name = "wangsiyu";
public void study(){
System.out.println("studdy sdudsla");
}
}
6手机类的小练习
略
7 一个对象的内存图

8 两个对象使用一个类的内存图

9 两个引用指向同一个对象内存图

10 使用对象类型作为方法的参数
10-1 创建一个学生类
代码块
package demo1;
public class mystudent {
public static void main(String[] args) {
Student stu = new Student();
stu.age=18;
stu.name="wangsiyu";
method(stu);
}
public static void method(Student stu){
System.out.println(stu.age);
System.out.println(stu.name);
stu.think();
}
}
10-2实例化学生,将对象作为方法的参数
代码块
package demo1;
public class mystudent {
public static void main(String[] args) {
Student stu = new Student();
stu.age=18;
stu.name="wangsiyu";
method(stu);
}
public static void method(Student stu){
System.out.println(stu.age);
System.out.println(stu.name);
stu.think();
}
}
10-3使用对象类型作为方法的参数内存图

11 使用对象类型作为方法的返回值
11-1 创建一个学生类
代码块
package demo1;
public class Student {
int age;
String name;
public void think(){
System.out.println(name+"学生可以思考");
}
}
11-2使用学生类的对象作为方法的返回值
代码块
package demo1;
public class mystudent {
public static void main(String[] args) {
Student res = method();
System.out.println(res.age);
System.out.println(res.name);
}
public static Student method(){
Student stu = new Student();
stu.name = "nezha";
stu.age = 12;
return stu;
}
}
12 成员变量和局部变量的区别
| null | 位置 | 作用域 | 默认值 | 内存 | 生命周期 |
|---|---|---|---|---|---|
| 成员变量 | 方法外部,直接写在类中 | 整个类作用域 | 有默认值,规则和数组一样 | 堆内存 | 随对象而生,随垃圾回收消失 |
| 局部变量 | 写在方法内部 | 只有方法可以调用,出了方法就失效 | 没有默认值,想使用必须手动赋值 | 栈内存 | 随方法进栈而生,随方法出栈消失 |
13 封装的思想——给一个数组,求最大值
package demo1;
public class getmax {
public static void main(String[] args) {
int[] array = {12,34,67,123,34,555,1024,1};
int res = getMax(array);
System.out.println("array数组的最大值是"+res);
}
public static int getMax(int[] array){
int max = array[0];
for (int i = 0; i < array.length; i++) {
if(array[i]>max){
max = array[i];
}
}
return max;
}
}
14 private封装
1.使用了private关键字修饰成员变量,本类中仍然可以访问到该成员变量,但是超出本来之外则不能直接访问该成员变量
2.使用了private关键字修饰成员变量,可以使用Getter和Settter方法来访问,提高代码的安全性
14-1 使用了private,Getter和Setter的类
package demo1;
public class Student {
private int age;
String name;
public void setAge(int res){
age = res;
}
public int getAge(){
return age;
}
}
14-2 使用Setter来设置成员变量值,使用Getter来获取值
package demo1;
public class mystudent {
public static void main(String[] args) {
Student stu = new Student();
System.out.println(stu.name);
System.out.println(stu.getAge());
stu.setAge(66);
System.out.println(stu.getAge());
}
}
15 使用private关键字来定义学生类
注意:布尔值的Setter不变,但是Setter是有区别的。
15-1 定义一个学生类
public class Student {
int age =18;
private boolean male =true;
public boolean isMale() {
return male;
}
public void setMale(boolean male) {
this.male = male;
}
}
15-2 获得布尔值,和修改布尔值的私有成员变量
package demo1;
public class ms {
public static void main(String[] args) {
Student stu = new Student();
stu.setMale(false);
System.out.println(stu.isMale());
}
}
16 this关键字的作用
当方法的局部变量和类的成员变量重名时候,遵循就近原则
使用this.变量名表示使用成员变量
通过谁调用的方法,谁就是this
16-1 定义一个类
package demo1;
public class Student {
String name = "wangsiyu";
public void sayhello(String name){
System.out.println(name+"你好,我是"+this.name);
}
}
16-2 使用这个类
package demo1;
public class ms {
public static void main(String[] args) {
Student stu = new Student();
stu.name = "mayun";
stu.sayhello("wangjianlin");
}
}
17 构造方法
1.当我们使用new创建对象的时候,其实调用的就是构造方法
2.构造方法的名称必须和类名称大小写完全一致
3.构造方法不要写返回值,连void都不要写
4.构造方法不能有返回值
18 定义一个标准的学生类
有私有成员变量
有构造方法
有Getter和Setter.
package demo1;
public class Student {
private String name;
public Student(){
}
public Student(String name){
this.name=name;
}
public void setName(String res){
name = res;
}
public String getName(){
return name;
}
}
java第2天:类,对象,封装和构造方法的更多相关文章
- 比较C++、Java、Delphi声明类对象时候的相关语法
同学们在学习的时候经常会遇到一些问题,C++.Java.Delphi他们到底有什么不一样的呢?今天我们来比较C++.Java.Delphi声明类对象时候的相关语法.希望对大家有帮助! C++中创建对象 ...
- 黑马程序员——JAVA基础之简述 类的封装
------- android培训.java培训.期待与您交流! ---------- 类的封装(Encapsulation) 封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 封装优 ...
- Java基础语法05-面向对象-封装-包-构造器-初始化
封装 面向对象三大特性:封装.继承.多态 封装的好处 1.调用者:方便使用/简化使用 2.设计者:安全,可控 隐藏对象内部的复杂性,只对外公开简单的接口.便于外界调用,从而提高系统的可扩展性.可维护性 ...
- Java反射 - 1(得到类对象的几种方法,调用方法,得到包下的所有类)
通过反射获得对象的方法 准备工作: 有一个User类如下 package o1; /** * Created by yesiming on 16-11-19. */ public class User ...
- java新手笔记9 类的封装示例
1.bank类 package com.yfs.javase; //类封装 public class BankCard { //属性 int balance;//默认0 实例变量 分配给每个对象一个 ...
- JAVA之等号、传类对象参数与c++的区别
在JAVA中用等号对类对象进行赋值,实际上操作的是对象的地址. eg: package MyText; class ClassA { int value; public void seta(int v ...
- java基础:详解类和对象,类和对象的应用,封装思想,构造方法详解,附练习案列
1. 类和对象 面向对象和面向过程的思想对比 : 面向过程 :是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的 面向对象 :是一种以对象为中心的编程思想,通过指挥对象实现具体的功能 1. ...
- 18.Java 封装详解/多态详解/类对象转型详解
封装概述 简述 封装是面向对象的三大特征之一. 封装优点 提高代码的安全性. 提高代码的复用性. "高内聚":封装细节,便于修改内部代码,提高可维护性. "低耦合&quo ...
- Java学习笔记 04 类和对象
一.类和对象的概念 类 >>具有相同属性和行为的一类实体 对象 >>实物存在的实体.通常会将对象划分为两个部分,即静态部分和动态部分.静态部分指的是不能动的部分,被称为属性,任 ...
- Java—类的封装、继承与多态
一.类和对象 1.类 类是数据以及对数据的一组操作的封装体. 类声明的格式: 类声明 { 成员变量的声明: 成员方法的声明及实现: } 1.1 声明类 [修饰符] class 类<泛型> ...
随机推荐
- codeforces 816 B. Karen and Coffee(思维)
题目链接:http://codeforces.com/contest/816/problem/B 题意:给出n个范围,q个查询问查询区间出现多少点在给出的n个范围中至少占了k次 题解:很显然的一道题目 ...
- Service:让客户端发现pod并与之通信
5.1.Service介绍 5.1.1.Serice简介 5.1.1.1什么是Service service是k8s中的一个重要概念,主要是提供负载均衡和服务自动发现. Service 是由 kube ...
- .Net基础篇_学习笔记_第六天_异常捕获复习及断点调试
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- OpenGl读取导入3D模型并且添加鼠标移动旋转显示
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11543828.html 最近实习要用到opengl库就是跟opencv 有点像的那个,然后下了 ...
- Python中使用python -m pip install --upgrade pip升级pip时老是不成功
场景 在使用python -m pip install --upgrade pip进行pip升级时,每次到最后就是报一大堆红色,最终升级不成功. 实现 使用默认的镜像源时间过长就会没响应,使用豆瓣的镜 ...
- springboot---redis缓存的使用
1.下载redis安装包,解压到电脑 2.启动redis 3.springboot application.properties中配置redis缓存 spring.redis.host=127.0. ...
- 关于ArrayList源码
一.构造方法 private static final int DEFAULT_CAPACITY = 10; //空参的构造方法,初始化数组长度为默认值,默认值为10 public ArrayList ...
- Bytectf-几道web总结
1.EZcms 这道题思路挺明确,给了源码,考点就是md5哈希扩展+phar反序列化 首先这道题会在上传的文件目录下生成无效的.htaccess,从而导致无法执行上传的webshell,所以就需要想办 ...
- JDBC连接时出现的问题总结
java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more tha ...
- (七十)c#Winform自定义控件-饼状图
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...