java学习第9天
类和对象:
万物可被看为对象,去关注了解对象的过程被称为面向对象,对对象进行的编程。
类是现实生活中一类具有共同属性和行为的事物的抽象,类的特点:类是对象的数据类型,类是具有相同属性和行为得一组对象集合、
对象的属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值。
对象的行为:对象能执行的操作
类是Java程序的基本组成单位。类的属性通过成员变量来体现。行为通过成员方法来体现。方法不含Static
类的定义:public class 类名{
//定义成员变量
//定义成员方法
}
对象的使用:
创建对象: 格式:类名对象名=new 类名();
Phone p= new Phone();
使用对象:
使用成员变量
格式:对象名.变量名 例:p.brand
使用成员方法
格式:对象名.方法名 例 p.call
案例:
package myproject;
public class Student {
int age;
String name;
public void Study() {
System.out.println("好好学习,天天向上");
}
public void doHonework() {
System.out.println("敲代码");
}
}
package myproject;
public class StudentTest {
public static void main(String[] args) {
Student a=new Student();
a.age=19;
a.name="xiaoming";
System.out.println(a.name);
System.out.println(a.age);
a.doHonework();
a.Study();
}
}
对象内存图
多个对象指向不同的内存,多个对象指向相同的内存(其中一个对象值改变,另一个之也会发生改变)
成员变量和局部变量
区别(1)类中位置不同,成员变量在类中方法外,局部变量在方法内或方法声明上。(2)内存中位置不同,成员变量在堆内存,局部变量在栈内存。(3)生命周期不同:成员变量随着对象的存在而存在,随着对象的消失而消失,局部变量随着方法调用而存在,随着方法调用完就消失,(4)初始化值不同:成员变量有默认的初始值,局部变量没有默认的初始值,必须先定义,赋值,才能使用。
Private关键字
是一个权限修饰符,可以修饰成员(成员变量和成员方法),作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能被访问。
针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作
提供“get变量()”方法,用于获取成员变量的值,方法用public修饰,提供“set变量名(参数)方法,用于设置成员变量的值,方法用public修饰。
案例:
package myproject;
public class Student {
private int age;
String name;
public void setAge(int a) {
if(age>120||age<0) {
System.out.println("年龄错误");
}else {
age=a;
}
}
public int getAge() {
return age;
}
public void Study() {
System.out.println("好好学习,天天向上");
}
public void doHonework() {
System.out.println("敲代码");
}
public void show() {
System.out.println(age+" "+name);
}
}
package myproject;
public class StudentTest {
public static void main(String[] args) {
Student a=new Student();
a.setAge(19);
a.name="xiaoming";
a.show();
a.doHonework();
a.Study();
}
}
This 关键字this 修饰的变量用于指代成员的变量,方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量,方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量。
什么时候使用this呢?
解决局部变量隐藏成员变量
This:代表所在的类的对象的使用
方法被哪个对象调用,this就代表哪个对象。
package myproject;
public class Student {
private int age;
private String name;
public void setAge(int a) {
if(age>120||age<0) {
System.out.println("年龄错误");
}else {
age=a;
}
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name=name;
}
public String getName() {
return name;
}
public void Study() {
System.out.println("好好学习,天天向上");
}
public void doHonework() {
System.out.println("敲代码");
}
public void show() {
System.out.println(age+" "+name);
}
}
package myproject;
public class StudentTest {
public static void main(String[] args) {
Student a=new Student();
a.setAge(19);
a.setName("xiaoming");
a.show();
a.doHonework();
a.Study();
}
}
封装:封装是面向对象的三大特征(继承,封装,多态)。
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法实现对隐藏信息的操作和访问,成员变量private,提供对应的getXxx()/setXxx()方法
封装的好处:通过方法来控制成员变量的操作,提高了代码的安全性,把代码用方法进行封装,提高了代码的复用性。
构造方法:
概述:完成对象的初始化,与构造函数类似。
构造方法的注意事项:任何对象都有构造函数,在不声明构造方法使系统会默认声明构造方法。
原文地址:https://www.cnblogs.com/20203923rensaihang/p/15003434.html
- 向ASP.NET Core迁移
- Gitlab CI 自动部署 asp.net core web api 到Docker容器
- 从XMLHttpRequest请求响应里getResponseHeader(header)报错:Refused to get unsafe header "**" 问题解决
- 全面理解 ASP.NET Core 依赖注入
- jq实现上传头像并实时预览功能
- 初探领域驱动设计(2)Repository在DDD中的应用
- js取整并保留两位小数的方法
- 异步编程 In .NET
- 判断标签是否包含class的方法
- vue.js使用props在父子组件之间传参
- JS中使用正则表达式替换对象里的大小写
- JS中const、var 和let的区别
- 动态计算rem的js代码
- 阻止浏览器冒泡事件,兼容firefox和ie
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 在javaEE中,实现用户登陆功能的实现
- JavaEE中,实现登录时进行校验验证码的功能
- JavaEE中为删除数据操作与退出操作添加确认提示框
- JavaWeb中的实现页面跳转的同卵双胞胎兄弟——重定向与请求转发
- JavaWeb中的异卵双胞胎——监听器与过滤器
- JavaEE中的el 表达式以及JSTL详解
- 基于Jsp和Servlet的简单项目
- 基于Servlet实现的简单登陆练习
- JavaScript初识
- 聊聊dubbo-go的DubboInvoker
- 如何在云开发Cloudbase中使用MySQL数据库
- Kubernetes笔记之基本概念
- 腾讯云语音识别之一句话识别
- 创建线程都有哪些方式?— Callable篇
- UiAutomator源码学习(3)-- UiObject