Java基础

  • Java基础day7-面向对象
  • 1 类和对象
    • 1.1 类和对象的理解
    • 1.2 类的定义
    • 对象的使用
    • 1.4 学生对象-练习
  • 2. 对象内存图
  • 3. 成员变量和局部变量
  • 4. 封装
    • 4.1 private关键字
    • 4.2 private的使用
    • 4.3 this关键字
    • 4.4 this内存原理
    • 4.5 封装思想
  • 5. 构造方法
    • 5.1 构造方法概述
    • 5.2 构造方法的注意事项
    • 5.3 标准类制作

Java基础day7-面向对象

1 类和对象

1.1 类和对象的理解

类:类是对现实生活中一类具有共同属性和行为的事物的抽象,它是对象的数据类型,类是具有相同属性和行为的一组对象的集合,简单来说,类是对现实事物的一种描述。
类由属性和行为组成

类是对事物的一种描述,对象则为具体存在的事物

1.2 类的定义

类的组成是由属性和行为两部分组成

  • 属性:在类中通过成员变量来体现(方法外的变量)
  • 行为:在类中通过成员方法来体现(去掉static)

类的定义步骤:
定义类
编写类的成员变量
编写类的成员方法

public class 类名{//成员变量变量1的数据类型 变量1;string brand;//成员方法方法1;方法2;
}

对象的使用

创建对象的格式:
类名 对象名 = new 类名();
调用成员的格式:
对象名.成员变量
对象名.成员方法()

示例
/* 创建对象格式:类名 对象名 = new 类名(); 范例:Phone p = new Phone(); 使用对象1:使用成员变量 格式:对象名.变量名 范例:p.brand 2:使用成员方法 格式:对象名.方法名() 范例:p.call()
*/
public class PhoneDemo { public static void main(String[] args) { //创建对象Phone p = new Phone(); //使用成员变量 System.out.println(p.brand); System.out.println(p.price); p.brand = "小米"; p.price = 2999; System.out.println(p.brand); System.out.println(p.price); //使用成员方法 p.call(); p.sendMessage(); }
}

1.4 学生对象-练习

需求:首先定义一个学生类,然后定义一个学生测试类,在学生测试类中通过对象完成成员变量和成员方法的使用

代码实现:

class Student{//定义成员变量String name;int age;//定义成员方法public void study(){System.out.println("好好学习,天天向上");}public void dohomework(){System.out.println("键盘敲烂,月薪过万");}
}
//测试类
public class test {public static void main(String[] args) {//创建对象Student s = new Student();//使用对象System.out.println(s.name+","+s.age);s.name = "林青霞";s.age = 30;System.out.println(s.name+","+s.age);s.study();s.dohomework();}
}

2. 对象内存图

单对象和多对象内存图

  • 当多个对象的引用指向同一个内存空间(变量所记录的地址值是一样的)
  • 只要有任何一个对象修改了内存中的数据,随后,无论使用哪一个对象进行数据获取,都是修改后的数据。

3. 成员变量和局部变量

  • 类中位置不同:成员变量(类中方法外)局部变量(方法内部或方法声明上)
  • 内存中位置不同:成员变量(堆内存)局部变量(栈内存)
  • 生命周期不同:成员变量(随着对象的存在而存在,随着对象的消失而消失)局部变量(随着方法的调用而 存在,醉着方法的调用完毕而消失)
  • 初始化值不同:成员变量(有默认初始化值)局部变量(没有默认初始化值,必须先定义,赋值才能使用)

4. 封装

4.1 private关键字

private是一个修饰符,可以用来修饰成员(成员变量,成员方法)

  • 被private修饰的成员,只能在本类进行访问,针对private修饰的成员变量,如果需要被其他类使用,提供相 应的操作

    • 提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰
    • 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰

示例代码:

class Student {//定义成员变量String name;private int age;//定义成员方法public void setage(int a) {if (a > 120 || a < 0) {System.out.println("你输入的年纪有误");} else {age = a;}}public int getage(){return age;}public void show() {System.out.println(name + "," + age);}
}
//定义测试类
public class test {public static void main(String[] args) {//创建对象Student s = new Student();//使用对象s.name = "林青霞";s.setage(30);s.show();}
}

4.2 private的使用

需求:定义标准的学生类,要求name和age使用private修饰,并提供set和get方法以及便于显示数据的show方法,测试类中创建对象并使用,最终控制台输出 林青霞,30

class Student {//定义成员变量private String name;private int age;//定义成员方法public void setname(String n){name = n;}public String getname(){return name;}public void setage(int a) {if (a > 120 || a < 0) {System.out.println("你输入的年纪有误");} else {age = a;}}public int getage(){return age;}public void show() {System.out.println(name + "," + age);}
}
public class test {public static void main(String[] args) {//创建对象Student s = new Student();//使用对象s.setname("林青霞");s.setage(30);s.show();System.out.println(s.getage()+s.getname());}
}

4.3 this关键字

this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)

  • 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
  • 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
public class Student{private String name;private int age;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;}public void show(){System.out.println(name+age);}
}

4.4 this内存原理

this代表当前调用方法的引用,哪个对象调用的方法,this就代表哪一个对象

4.5 封装思想

  1. 封装概述 是面向对象三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
  2. 封装原则 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法
  3. 封装好处 通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性

5. 构造方法

5.1 构造方法概述

构造方法是一种特殊的方法
作用:创建对象 Student stu = new Student();
格式:

public class 类名{修饰符 类名( 参数 ) {}
}

功能:主要是完成对象数据的初始化
示例代码:

class Student {private String name;private int age;//构造方法public Student() {System.out.println("无参构造方法");}public void show() {System.out.println(name + age);}
}
public class test{public static void main(String[] args) {Student s = new Student();s.show();}
}

5.2 构造方法的注意事项

  • 构造方法的创建

    如果没有定义构造方法,系统将给出一个默认的无参数构造方法 如果定义了构造方法,系统将不再提供默认的构造方法

  • 构造方法的重载

    如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法

  • 推荐的使用方式

    无论是否使用,都手工书写无参数构造方法

  • 重要功能!

    可以使用带参构造,为成员变量进行初始化

代码实现:

class Student {private String name;private int age;public Student() {}public Student(String name) {this.name = name;}public Student(int age) {this.age = age;}public Student(String name, int age) {this.name = name;this.age = age;}public void show() {System.out.println(name + "," + age);}
}
public class test{public static void main(String[] args) {//创建对象Student s1= new Student();s1.show();Student s2= new Student("林青霞");s2.show();Student s3= new Student(30);s3.show();Student s4= new Student("林青霞",30);s4.show();}
}

5.3 标准类制作

需求:定义标准学生类,要求分别使用空参和有参构造方法创建对象,空参创建的对象通过setXxx赋值,有参创建的对象直接赋值,并通过show方法展示数据。

示例代码:

class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}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;}public void show() {System.out.println(name + "," + age);}
}
public class test{public static void main(String[] args) {Student s1 = new Student();s1.setname("林青霞");s1.setage(30);s1.show();Student s2 = new Student("林青霞",30);s1.show();}}

Java基础day7相关推荐

  1. Java 基础学习记录

    Java 基础 DAY1 1.关于进制的运算 2.关于存储单元 3.关于CMD的基本命令 4.JRE与JDK 5.Java环境变量 6.程序开发步骤 7.HelloWorld 8.标识符 9.常量 1 ...

  2. Java基础入门语法和安装

    1. Java概述 1.1 Java语言背景介绍(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Un ...

  3. Java笔记整理-02.Java基础语法

    1,标识符 由英文字母.数字._(下划线)和$组成,长度不限.其中英文字母包含大写字母(A-Z)和小写字母(a-z),数字包含0到9. 标识符的第一个字符不能是数字(即标识符不能以数字开头). 标识符 ...

  4. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  5. Java基础概念性的知识总结

    属于个人的所学的知识总结,不是全面的 1.JDK.JRE和JVM三者的区别 01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心.包括了Java的 ...

  6. 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...

  7. 叮!您收到一份超值Java基础入门资料!

    摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...

  8. java重要基础知识点_必看 | 新人必看的Java基础知识点大梳理

    原标题:必看 | 新人必看的Java基础知识点大梳理 各位正在认真苦学Java的准大神,在这烈日炎炎的夏季里,老九君准备给大家带来一个超级大的"冰镇西瓜,"给大家清凉一下,压压惊. ...

  9. Java基础-Date类常用方法介绍

    Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...

最新文章

  1. linux grub修复 手动引导进入系统
  2. python多线程和多进程——python并行编程实验
  3. 高通软件发布版本简称
  4. Leetcode代码练习(三)
  5. 【机器学习】异常检测算法速览(Python代码)
  6. Lombok中关于@Data的使用
  7. 从零开始学产品第六篇:更强大的测试,自动化测试和性能测试
  8. Oracle中临时表的深入研究
  9. 23 android多线程
  10. 十款乐高积木虚拟搭建软件,乐高仿真工具,积木模拟搭建耗材统计评估软件...
  11. html+css+js:文案馆网页设计
  12. 网吧用计算机性能配件清单,如何查看网吧电脑配置清单图文教程
  13. 用Python学《微积分B》(单调性与极值,凸性与拐点)
  14. 零基础学习3D建模,第一步:3D建模软件有哪些?给你科普一下
  15. Java day23
  16. 【docker问题】Client.Timeout exceeded while awaiting header
  17. 认识kubernetes(k8s),k8s单节点etcd部署
  18. SQL 中INSERT INTO 的使用方法
  19. 2021湖南省地区高考成绩排名查询,湖南高考排名查询方法,2021年湖南高考成绩位次全省排名查询...
  20. MySQL 6:MySQL存储过程、存储函数

热门文章

  1. JavaScript 学习笔记-- ES6学习(一)介绍以及Babel的使用
  2. tar打包和解压命令
  3. ubuntu 16.04更新软件源
  4. MIN()与MAX()函数 的注意事项
  5. url中参数以及callback后面的串
  6. javascript 与vbscript 互相调用
  7. BZOJ2212——线段树合并
  8. 奇怪的.strip(alir) #()里面有东西 待问老师........
  9. 序列化反序列化api(入门级)
  10. jquery实现点击改变背景色,点击其他恢复原来背景色,被点击的改变背景色