面向对象之封装_Java3

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

  • A:在类中的位置不同

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

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

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

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

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

	public void speak(int x) {
		int num = 10;						//x和num都是局部变量
		System.out.println(name);
	
		System.out.println(num);
	}
}

02_面向对象(方法重载)

  • A:方法重载
    • 1:方法名相同
    • 2:参数个数不同
    • 3:参数类型不同
    • 4:参数的顺序不同(算重载,但开发中不用)

重载:方法名相同,参数列表不同,与返回值类型无关

public class Demo2_Overload {
	public static void main(String[] args) {
		int sum1 = add(10, 20);
		System.out.println("sum1 = " + sum1);
		
		double sum2= add(10, 20);
		System.out.println("sum2 = " + sum2);
		
		int sum3 = add(10, 20, 30);
		System.out.println("sum3 = " + sum3);
	}
	
	public static int add(int a, int b) {
		return a + b;
	}
	
	public static int add(int a, int b, int c) {
		return a + b + c;
	}
}

03_面向对象(构造方法Constructor概述和格式)

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

构造方法的作用及格式特点分别是什么?

  • a:方法名与类名相同(大小也要与类名一致)
  • b:没有返回值类型,连void都没有
  • c:没有具体的返回值return;
  • 思考:构造方法可以重载吗?
    可以
class Demo1_Constructor {						//Constructor构造
	public static void main(String[] args) {
		Person p = new Person();				//在一创建对象的时候,系统就帮我调用了构造方法
		//p.Person();							//构造方法不能用对象调用
		p.show();
		Person p2 = new Person();				//再次创建对象
		p2.show();
	}
}
class Person {									//类名
	private String name;
	private int age;

	//构造方法
	public Person() {
		//return;								//构造方法也是有return语句的,可以忽略不写;
		name = "张三";
		age = 23;
	}
	public void show() {
		System.out.println(name + "..." + age);
	}
}

04_面向对象(构造方法的重载及注意事项)

  • A:案例演示
    • 构造方法的重载
    • 重载:方法名相同,与返回值类型无关(构造方法没有返回值),只看参数列表
  • B:构造方法注意事项
    • a:如果我们没有给出构造方法,系统将自动提供一个无参构造方法。
    • b:如果我们给出了构造方法,系统将不再提供默认的无参构造方法。
      • 注意:这个时候,如果我们还想使用无参构造方法,就必须自己给出。建议永远自己给出无参构造方法
  • 思考题:构造方法,set方法都可以给成员变量赋值,这两种赋值方式有什么区别?
    • 构造方法
      • 给属性进行初始化
    • setXxx方法
      • 修改属性值
      • 这两种方式,在开发中用setXxx更多一些,因为比较灵活
class Demo2_Person {
	public static void main(String[] args) {
		Person p1 = new Person();
		p1.show();

		System.out.println("---------------------");

		Person p2 = new Person("张三",23);
		p2.show();

		System.out.println("---------------------");

		Person p3 = new Person("李四",24);
		p3.show();
	}
}
class Person {
	private String name;			//姓名
	private int age;				//年龄

	public Person() {				//空参构造
		System.out.println("空参的构造");
	}
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
		System.out.println("有参的构造");
	}
	public void show() {
		System.out.println(name + "..." + age);
	}
}

在这里插入图片描述

05_面向对象(学生类的代码及测试)

  • A:案例演示
    • 学生类:
      • 成员变量:
        • name,age
      • 构造方法:
        • 无参,带两个参
      • 成员方法:
        • getXxx()/setXxx()
        • show():输出该类的所有成员变量值
  • B:给成员变量赋值:
    • a:setXxx()方法
    • b:构造方法
  • C:输出成员变量值的方式:
    • a:通过getXxx()分别获取然后拼接
    • b:通过调用show()方法搞定
class Demo4_Student {
	public static void main(String[] args) {
		Student s1 = new Student();					//使用空参构造
		s1.setName("张三");							//设置姓名
		s1.setAge(23);								//设置年龄

		System.out.println("我的姓名是:" + s1.getName() + ",我的年龄是:" + s1.getAge());
		//getXxx()获取属性值,可以打印,也可以赋值给其他的变量,做其他的操作
		Student s2 = new Student("李四",24);
		s2.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);
	}
}

• 模仿刚才的学生类代码,写一个手机类并测试。
手机类:
成员变量: 品牌(brand),价格(price)
构造方法: 无参构造,带参构造
成员方法:
各个字段对应的setXXX()和getXXX()方法,
show()方法:这个方法用来显示手机的品牌和价格

06_面向对象(手机类的代码及测试)

  • A:案例演示
    • 模仿学生类,完成手机类代码
class Demo5_Phone {
	public static void main(String[] args) {
		Phone p1 = new Phone();
		p1.setBrand("苹果");
		p1.setPrice(1500);
		System.out.println(p1.getBrand() + "..." + p1.getPrice());

		Phone p2 = new Phone("小米",98);
		p2.show();
	}
}

class Phone {
	private String brand;						//品牌
	private int price;							//价格

	public Phone(){}							//空参构造

	public Phone(String brand,int price) {		//有参构造
		this.brand = brand;
		this.price = price;
	}

	public void setBrand(String brand) {		//设置品牌
		this.brand = brand;
	}

	public String getBrand() {					//获取品牌
		return brand;
	}

	public void setPrice(int price) {			//设置价格
		this.price = price;
	}

	public int getPrice() {						//获取价格
		return price;
	}

	public void show() {
		System.out.println(brand + "..." + price);
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值