首页 技术 正文
技术 2022年11月23日
0 收藏 845 点赞 3,891 浏览 3517 个字

1.对象的创建以及使用

Student stu =new Student();

根据一个类创建一个对象

导包、创建、使用

2.手机练习

有main才能run

Phone.java

package cn.itcast.day06.demo02;/*
定义一个类,用来模拟“手机”事物。
属性:品牌、价格、颜色
行为:打电话、发短信对应到类当中:
成员变量(属性):
String brand; // 品牌
double price; // 价格
String color; // 颜色
成员方法(行为):
public void call(String who) {} // 打电话
public void sendMessage() {} // 群发短信
*/
public class Phone { // 成员变量
String brand; // 品牌
double price; // 价格
String color; // 颜色 // 成员方法
public void call(String who) {
System.out.println("给" + who + "打电话");
} public void sendMessage() {
System.out.println("群发短信");
}
}

Demo01PhoneOne.java

package cn.itcast.day06.demo02;public class Demo01PhoneOne {    public static void main(String[] args) {
// 根据Phone类,创建一个名为one的对象
// 格式:类名称 对象名 = new 类名称();
Phone one = new Phone();
System.out.println(one.brand); // null
System.out.println(one.price); // 0.0
System.out.println(one.color); // null
System.out.println("========="); one.brand = "苹果";
one.price = 8388.0;
one.color = "黑色";
System.out.println(one.brand); // 苹果
System.out.println(one.price); // 8388.0
System.out.println(one.color); // 黑色
System.out.println("========="); one.call("乔布斯"); // 给乔布斯打电话
one.sendMessage(); // 群发短信
}}

3.一个对象的内存

成员方法是  堆中  的成员方法指向  方法区  的成员方法的地址

成员变量是 栈中 的成员变量指向   堆中  的成员变量

叉号代表出栈,栈负责方法的运行、方法按照入栈的形式不断执行并出栈

堆负责new出来的成员变量和成员方法,但是成员方法是用地址引用自方法区中

方法区则是储存方法.class

4.两个对象指向同一个方法

注意栈的顺序

先是main函数入栈然后分别执行各自的对象

5.两个引用指向同一个对象空间

one、two即为对象名

前面一样但是变量是one玩剩下的,数值不是默认值被改过因为指向的地址相同

6.使用对象类型作为方法的参数

类和对象的使用和c中的结构体可以进行类比

方法和c中的函数可以进行类比

对象类型作为方法的参数传递的是地址值

7.使用对象类型作为方法的返回值

返回地址值

8.成员变量和局部变量的区别

非常重要

参数可以直接打印,因为参数被调用肯定会被赋值

9.面向对象语言的三大特性 封装性

封装、继承、多态

用方法对某个功能进行封装

10.关键字private也是封装

private是一个权限修饰符,代表最小权限。

主要目的是能在方法内进行变量的控制筛选

只有在方法内才能进行循环语句的编写

package cn.itcast.day06.demo03;/*
问题描述:定义Person的年龄时,无法阻止不合理的数值被设置进来。
解决方案:用private关键字将需要保护的成员变量进行修饰。一旦使用了private进行修饰,那么本类当中仍然可以随意访问。
但是!超出了本类范围之外就不能再直接访问了。间接访问private成员变量,就是定义一对儿Getter/Setter方法必须叫setXxx或者是getXxx命名规则。
对于Getter来说,不能有参数,返回值类型和成员变量对应;
对于Setter来说,不能有返回值,参数类型和成员变量对应。
*/
public class Person { String name; // 姓名
private int age; // 年龄 public void show() {
System.out.println("我叫:" + name + ",年龄:" + age);
} // 这个成员方法,专门用于向age设置数据
public void setAge(int num) {
if (num < 100 && num >= 9) { // 如果是合理情况
age = num;
} else {
System.out.println("数据不合理!");
}
} // 这个成员方法,专门用于获取age的数据
public int getAge() {
return age;
}}
package cn.itcast.day06.demo03;public class Demo03Person {    public static void main(String[] args) {
Person person = new Person();
person.show(); person.name = "赵丽颖";
// person.age = -20; // 直接访问private内容,错误写法!
person.setAge(20);
person.show();
}}

11.private练习

alt+insert快捷键

Boolen的get值不一样是isXXX

12.this关键字的使用

重名的情况下起到区分的作用

13.构造方法

package cn.itcast.day06.demo04;/*
构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。
格式:
public 类名称(参数类型 参数名称) {
方法体
}注意事项:
1. 构造方法的名称必须和所在的类名称完全一样,就连大小写也要一样
2. 构造方法不要写返回值类型,连void都不写
3. 构造方法不能return一个具体的返回值
4. 如果没有编写任何构造方法,那么编译器将会默认赠送一个构造方法,没有参数、方法体什么事情都不做。
public Student() {}
5. 一旦编写了至少一个构造方法,那么编译器将不再赠送。
6. 构造方法也是可以进行重载的。
重载:方法名称相同,参数列表不同。
*/
public class Student { // 成员变量
private String name;
private int age; // 无参数的构造方法
public Student() {
System.out.println("无参构造方法执行啦!");
} // 全参数的构造方法
public Student(String name, int age) {
System.out.println("全参构造方法执行啦!");
this.name = name;
this.age = age;
} // Getter Setter
public void setName(String name) {
this.name = name;
} public String getName() {
return name;
} public void setAge(int age) {
this.age = age;
} public int getAge() {
return age;
}}
package cn.itcast.day06.demo04;public class Demo02Student {    public static void main(String[] args) {
Student stu1 = new Student(); // 无参构造
System.out.println("============"); Student stu2 = new Student("赵丽颖", 20); // 全参构造
System.out.println("姓名:" + stu2.getName() + ",年龄:" + stu2.getAge());
// 如果需要改变对象当中的成员变量数据内容,仍然还需要使用setXxx方法
stu2.setAge(21); // 改变年龄
System.out.println("姓名:" + stu2.getName() + ",年龄:" + stu2.getAge()); }}

14.定义一个标准的类

alt+insert快捷键可以快速加入getter setter,也可以生成无参数构造方法、也可以生成全参数构造方法

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,994
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,507
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,350
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,135
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,768
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,845