匿名函数 构造方法 toString 封装

###06.02_面向对象(类与对象概述)(掌握)

  • A:我们学习编程是为了什么
    • 为了把我们日常生活中实物用学习语言描述出来
  • B:我们如何描述现实世界事物
    • 属性 就是该事物的描述信息(事物身上的名词)
    • 行为 就是该事物能够做什么(事物身上的动词)
  • C:Java中最基本的单位是类,Java中用class描述事物也是如此
    • 成员变量 就是事物的属性
    • 成员方法 就是事物的行为
  • D:定义类其实就是定义类的成员(成员变量和成员方法)
    • a:成员变量 和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
    • b:成员方法 和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。
  • E:类和对象的概念
    • a:类:是一组相关的属性和行为的集合
    • b:对象:是该类事物的具体体现
    • c:举例:
      • 类 学生
      • 对象 具体的某个学生就是一个对象

###06.03_面向对象(学生类的定义)(掌握)

  • A:学生事物
  • B:学生类
  • C:案例演示
    • 属性:姓名,年龄,性别
    • 行为:学习,睡觉

###06.04_面向对象(手机类的定义)(掌握)

  • 模仿学生类,让学生自己完成
    • 属性:品牌(brand)价格(price)
    • 行为:打电话(call),发信息(sendMessage)玩游戏(playGame)

###06.05_面向对象(学生类的使用)(掌握)

  • 如何使用对象?
    • 创建对象并使用
    • 格式:类名 对象名 = new 类名();
  • 如何使用成员变量呢?
    • 对象名.变量名
  • 如何使用成员方法呢?
    • 对象名.方法名(…)

###06.06_面向对象(手机类的使用)(掌握)

  • A:学生自己完成
    • 模仿学生类,让学生自己完成

###06.07_面向对象(一个对象的内存图)(掌握)

  • A:画图演示
    • 一个对象

###06.08_面向对象(二个对象的内存图)(了解)

  • A:画图演示
    • 二个不同的对象

###06.09_面向对象(三个引用两个对象的内存图)(了解)

  • A:画图演示
    • 三个引用,有两个对象的引用指向同一个地址

06.10_面向对象(成员变量和局部变量的区别)(掌握)

  • A:在类中的位置不同

    • 成员变量:在类中方法外
    • 局部变量:在方法定义中或者方法声明上
  • B:在内存中的位置不同

    • 成员变量:在堆内存(成员变量属于对象,对象进堆内存)
    • 局部变量:在栈内存(局部变量属于方法,方法进栈内存)
  • C:生命周期不同

    • 成员变量:随着对象的创建而存在,随着对象的消失而消失
    • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
  • D:初始化值不同

    • 成员变量:有默认初始化值 整型 byte short int long 0
      浮点型 double float 0.0
      字符型 char “\u0000”
      布尔 boolean false
      引用数据类型 null

    • 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。

  • 注意事项:

    • 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
    • 基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char
    • 引用数据类型变量包括哪些:数组,类,接口,枚举

###06.11_面向对象(方法的形式参数是类名的时候如何调用)(掌握)

  • A:方法的参数是类名public void print(Student s){}//print(new Student());
    • 如果你看到了一个方法的形式参数是一个类类型(引用类型),这里其实需要的是该类的对象。

06.12_面向对象(匿名对象的概述和应用)(掌握)

在这里插入图片描述

  • A:什么是匿名对象
    • 没有名字的对象
  • B:匿名对象应用场景
    • a:调用方法,仅仅只调用一次的时候。
      • 那么,这种匿名调用有什么好处吗?
        • 节省代码
      • 注意:调用多次的时候,不适合。匿名对象调用完毕就是垃圾。可以被垃圾回收器回收。
    • b:匿名对象可以作为实际参数传递
  • C:案例演示
    • 匿名对象应用场景
package com.day04.Demo;

public class Student { //学生类
	//构造方法
	public Student() { //构造方法
	//无参构造	给对象的数据(属性)进行初始化    没有系统自己添加

	}
	public Student(String name){
		this.name=name;
		
	};
	public Student(String name,int age,String sex){
		this.name=name;
		this.age =age;
		this.sex=sex;
	};
	/**
	 * 成员变量 : 在类中,方法外 
	 */
	//姓名       
	private String name;
	//年龄
	private int age;
	//性别
	private String sex;
	/**
	 * 成员方法(行为)
	 */
	//获取名字
	public  String getName() {
		return name;
	};
	//对名字的赋值
	public void setName(String name) {
		this.name =name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age =age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex =sex;
	}
	public void study() {
		System.out.println(name+"在学习");
	}
	public void sleep() {
		System.out.println(name+"在睡觉");
	}
	//打印方法
	public String toString() {
		System.out.println("这是打印方法");
		return "Student [name=" + name + ", age=" + age + ", sex=" + sex + "]";
	}
}
package com.day04.Demo;

public class Demo02 { //测试类
	public static void main(String[] args) {
//			Student st= new Student();
//			st.setName("张三");
//			Student student = new Student();
//			student.setName("李四");
////			System.out.println(st.getName());
//			System.out.println(st.toString());
//			System.out.println(student.toString());
//			new Student().name="王伟";
//			new Student().study();
			//匿名对象的好处
			//节省代码,如果只需要调用一次,推荐使用
			//如果要多次使用,那就不能再使用匿名对象
		Student st = new Student("张三",23,"男");
		
		System.out.println(st);
		//优先执行toString方法,没有toString方法输出地址
		long round = Math.round(-12.4);
		System.out.println(round);
	}

###06.13_面向对象(封装的概述)(掌握)使用private

  • A:封装概述

    • 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
  • B:封装好处

    • 隐藏实现细节,提供公共的访问方式
    • 提高了代码的复用性
    • 提高安全性。
  • C:封装原则

    • 将不需要对外提供的内容都隐藏起来。
    • 把属性隐藏,提供公共方法对其访问。

###06.14_面向对象(private关键字的概述和特点)(掌握)

  • A:人类赋值年龄的问题
  • B:private关键字特点
    • a:是一个权限修饰符 private public default(没有修饰时 包裹外不能不能)
    • b:可以修饰成员变量和成员方法,不能修饰局部变量
    • c:被其修饰的成员只能在本类中被访问
  • C:案例演示
    • 封装和private的应用:
    • A:把成员变量用private修饰
    • B:提供对应的getXxx()和setXxx()方法
      == private仅仅是封装的一种体现形式,不能说封装就是私有(没有修饰时. 包裹外一样不能引用 . 同包不同类可以用 ,相对也是私有)==

###06.15_面向对象(this关键字的概述和应用)(掌握)

  • A:this关键字特点
    • 代表当前对象的引用 (谁来调用我,我就代表谁)
  • B:案例演示
    • this的应用场景
    • 用来区分成员变量和局部变量重名
package dayOne;


public class aShouji {
	private   String name;
	private int price;
	//private  封装
	int age;
	public void setName(String name){
		//设置时,你已经知道内容为什么需要返回值
		name=name;// 不能控制成员变量  是局部变量
	}
	public void setPrice(int price){
		this.price=price;
		//this   在new时就把地址付给this和栈里方法变量   调用this相当于调用栈里   控制成员变量
	}
	public   String getName(){
		//得到某值当然需要返回一个值才行
		return name;
	}
	
}

###06.16_面向对象(手机类代码及其测试)(掌握)

  • A:学生练习
    • 请把手机类写成一个标准,然后创建对象测试功能。

        class Demo2_Phone {
        	public static void main(String[] args) {
        		Phone p1 = new Phone();
        		p1.setBrand("三星");
        		p1.setPrice(5288);
        
        		System.out.println(p1.getBrand() + "..." + p1.getPrice());
        		p1.call();
        		p1.sendMessage();
        		p1.playGame();
        	}
        }
        /*
        手机类
        	属性:品牌brand,价格price
        	行为:打电话call,发短信sendMessage,玩游戏,playGame
        */
        class Phone {								//java bean
        	private String brand;					//品牌
        	private int price;						//价格
        
        	public void setBrand(String brand) {	//设置品牌
        		this.brand = brand;
        	}
        
        	public String getBrand() {				//获取品牌
        		return this.brand;					//this.可以省略,你不加系统会默认给你加
        	}
        
        	public void setPrice(int price) {		//设置价格
        		this.price = price;
        	}
        
        	public int getPrice() {					//获取价格
        		return price;
        	}
        
        	public void call() {					//打电话
        		System.out.println("打电话");
        	}
        
        	public void sendMessage() {				//发短信
        		System.out.println("发短信");
        	}
        
        	public void playGame() {				//玩游戏
        		System.out.println("玩游戏");
        	}
        }
      

###07.01_面向对象(构造方法Constructor概述和格式)(掌握)

  • A:构造方法概述和作用
    • 给对象的数据(属性)进行初始化 没有系统自己添加
  • B:构造方法格式特点
    • a:方法名与类名相同(大小也要与类名一致)
    • b:没有返回值类型,连void都没有
    • c:没有具体的返回值return;

###07.02_面向对象(构造方法的重载及注意事项)(掌握)

  • A:案例演示
    • 构造方法的重载
    • 重载:方法名相同,与返回值类型无关(构造方法没有返回值),只看参数列表
  • B:构造方法注意事项
    • a:如果我们没有给出构造方法,系统将自动提供一个无参构造方法。
    • b:如果我们给出了构造方法,系统将不再提供默认的无参构造方法。
      • 注意:这个时候,如果我们还想使用无参构造方法,就必须自己给出。建议永远自己给出无参构造方法

###07.03_面向对象(给成员变量赋值的两种方式的区别)

  • A:setXxx()方法
    • 修改属性值
  • B:构造方法
    • 给对象中属性进行初始化

###07.04_面向对象(学生类的代码及测试)(掌握)

  • A:案例演示

    • 学生类:
      • 成员变量:
        • name,age
      • 构造方法:
        • 无参,带两个参
      • 成员方法:
        • getXxx()/setXxx()
        • show():输出该类的所有成员变量值
  • B:给成员变量赋值:

    • a:setXxx()方法
    • b:构造方法
  • C:输出成员变量值的方式:

    • a:通过getXxx()分别获取然后拼接
    • b:通过调用show()方法搞定

###07.05_面向对象(手机类的代码及测试)(掌握)

  • A:案例演示
    • 模仿学生类,完成手机类代码

###07.06_面向对象(创建一个对象的步骤)(掌握)

  • A:画图演示
    • 画图说明一个对象的创建过程做了哪些事情?
    • Student s = new Student();
    • 1,Student.class加载进内存
    • 2,声明一个Student类型引用s
    • 3,在堆内存创建对象,
    • 4,给对象中属性默认初始化值
    • 5,属性进行显示初始化
    • 6,构造方法进栈,对对象中的属性赋值,构造方法弹栈
    • 7,将对象的地址值赋值给s

###07.07_面向对象(长方形案例练习)(掌握)

  • A:案例演示
    • 需求:
      • 定义一个长方形类,定义 求周长和面积的方法,
      • 然后定义一个测试类进行测试。

###07.08_面向对象(员工类案例练习)(掌握)

  • A:案例演示
    • 需求:定义一个员工类Employee
    • 然后给出成员变量
      • 姓名name,工号id,工资salary
    • 构造方法,
      • 空参和有参的
    • getXxx()setXxx()方法,
    • 以及一个显示所有成员信息的方法。并测试。
      • work

###07.09_面向对象(static关键字及内存图)(了解)

  • A:案例演示

    • 通过一个案例引入static关键字。
    • 人类:Person。每个人都有国籍,中国。
  • B:画图演示

    • 带有static的内存图

###07.10_面向对象(static关键字的特点)(掌握)

  • A:static关键字的特点
    • a:随着类的加载而加载
    • b:优先于对象存在
    • c:被类的所有对象共享
      • 举例:咱们班级的学生应该共用同一个班级编号。
      • 其实这个特点也是在告诉我们什么时候使用静态?
        • 如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
      • 举例:
        • 饮水机(用静态修饰)
        • 水杯(不能用静态修饰)
        • 共性用静态,特性用非静态
    • d:可以通过类名调用
      • 其实它本身也可以通过对象名调用。
      • 推荐使用类名调用。
      • 静态修饰的内容一般我们称其为:与类相关的,类成员
  • B:案例演示
    • static关键字的特点

###07.11_面向对象(static的注意事项)(掌握)

  • A:static的注意事项
    • a:在静态方法中是没有this关键字的
      • 如何理解呢?
        • 静态是随着类的加载而加载,this是随着对象的创建而存在。
        • 静态比对象先存在。
    • b:静态方法只能访问静态的成员变量和静态的成员方法
      • 静态方法:
        • 成员变量:只能访问静态变量
        • 成员方法:只能访问静态成员方法
      • 非静态方法:
        • 成员变量:可以是静态的,也可以是非静态的
        • 成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
      • 简单记:
        • 静态只能访问静态。
  • B:案例演示
    • static的注意事项

###07.12_面向对象(静态变量和成员变量的区别)(掌握)

  • 静态变量也叫类变量 成员变量也叫对象变量
  • A:所属不同
    • 静态变量属于类,所以也称为为类变量
    • 成员变量属于对象,所以也称为实例变量(对象变量)
  • B:内存中位置不同
    • 静态变量存储于方法区的静态区
    • 成员变量存储于堆内存
  • C:内存出现时间不同
    • 静态变量随着类的加载而加载,随着类的消失而消失
    • 成员变量随着对象的创建而存在,随着对象的消失而消失
  • D:调用不同
    • 静态变量可以通过类名调用,也可以通过对象调用
    • 成员变量只能通过对 象名调用

###07.13_面向对象(main方法的格式详细解释)(了解)

  • A:格式
    • public static void main(String[] args) {}
  • B:针对格式的解释
    • public 被jvm调用,访问权限足够大。
    • static 被jvm调用,不用创建对象,直接类名访问
    • void被jvm调用,不需要给jvm返回值
    • main 一个通用的名称,虽然不是关键字,但是被jvm识别
    • String[] args 以前用于接收键盘录入的
  • C:演示案例
    • 通过args接收键盘例如数据

###07.14_面向对象(工具类中使用静态)(了解)

  • A:制作一个工具类
    • ArrayTool
    • 1,获取最大值
    • 2,数组的遍历
    • 3,数组的反转

###07.17_面向对象(学习Math类的随机数功能)(了解)

  • 打开JDK提供的帮助文档学习
  • A:Math类概述
    • 类包含用于执行基本数学运算的方法
  • B:Math类特点
    • 由于Math类在java.lang包下,所以不需要导包。
    • 因为它的成员全部是静态的,所以私有了构造方法
  • C:获取随机数的方法
    • public static double random():返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
  • D:我要获取一个1-100之间的随机数,肿么办?
    • int number = (int)(Math.random()*100)+1;

###07.19_day07总结
把今天的知识点总结一遍。

猜你喜欢

转载自blog.csdn.net/weixin_44594873/article/details/87797349