javaSE基础面向对象笔记(3)成员变量局部变量区别,构造方法与普通方法区别,重载,封装

1.成员变量局部变量区别
1.声明位置
成员变量:类以内,方法以外
局部变量:方法内部
2.作用域
成员变量:在类的方法内部调用
局部变量:方法内部
3.默认值
成员变量:有默认值,即使没有初始化也可以使用
局部变量:没有默认值,在使用之前必须初始化
4.内存区域
成员变量:内存在堆中
局部变量:栈中
类和对象:对象是类的实例,类是对象的模板(抽象)

public class Student {
    
    
	//成员变量 属性 全局变量-->类以内 方法以外
	String name;
	int age;
	boolean f;
	int stuId;	
	//写构造方法
	//public 类名(){}
	/*
	 * 自己没有声明构造方法之前,也是可以使用的 系统提供好的隐式构造方法 无参数的
	 * 当自己声明了构造方法 系统则不会提供隐式构造方法 自己声明的构造方法 叫做显式构造方法
	 * 
	 * 构造方法是写在new后面的 自动执行的 不能通过对象名调用 作用:创建对象
	 */
	public Student() {
    
    
		System.out.println("无参数的构造方法");
	}	
	public Student(String name1, int age1, int stuId1) {
    
    
		//外界在创建学生对象的时候 给属性进行赋值
		name = name1;
		age = age1;
		stuId = stuId1;
	}	
	public Student(String name1) {
    
    
		//外界在创建学生对象的时候 给属性进行赋值
		name = name1;
	}
	//行为 方法-->成员方法
	public void eat() {
    
    
		System.out.println("吃");
	}
	public void play() {
    
    
		//在方法内部定义的变量-->局部变量
		int a = 4;
		System.out.println("玩");
	}
	public void study() {
    
    
		System.out.println("学习");
	}
	}

2.构造方法与普通方法的区别
1.声明格式不同
2.调用方式不同
3.作用不同 实例化对象 给属性赋值
写构造方法:
自己没有声明构造方法之前也是可以使用的系统提供好的隐式构造方法,无参数的
当自己声明了构造方法,系统不会提供隐式构造方法
自己声明的构造方法叫做显式构造方法
构造方法是写在new后面的自动执行的,不能通过对象名调用
作用:创建对象

3.重载
重载:在一个类中方法名字形同 参数列表不同 这就形成了重载,功能相似但有细微差别则需要重新定义成重载关系
参数不同:形式参数的类型 顺序 个数与参数名字无关
特殊情况:如果必须要自动转型,但是可以出现多个同级别的转换,则编译报错
级别有差异,则选择转换少的方法
重载与返回值类型无关

public class Test1 {
    
    
	public static void main(String[] args) {
    
    
		//传递实际参数 程序就会自动查找对应的形参列表的方法
		sum(4, 5);
	}
	public static void sum(double a,int b) {
    
    
		System.out.println("两个int相加");		
	}
	public static void sum(int b,int a) {
    
    
		System.out.println("两个int相加");		
	}
	public static void sum(int a,int b,int c) {
    
    
		System.out.println("三个int相加");
	}
	public static void sum(double d,double e) {
    
    
		System.out.println("两个double相加");		
	}
}

面向过程
面向对象:以具体的事物为单位,更加关注的是事物功能,而非流程
底层是由面向过程实现的
面向对象中抽象 继承 封装 多态
定义类:抽取多个对象中共同的特征和行为 抽取的过程–>抽象
抽取出来的这些特征和行为组合成了类
根据类型创建对象

4.封装
1.将属性私有化
2.提供set/get对外访问的公共接口

属性的封装:
作用:提高数据的安全性

类的封装:将属性和方法放到类中,
方便统一进行管理,安全性

方法的封装:减少冗余代码,提高代码的复用性,便于维护,提高阅读性

public class Person1 {
    
    
	//属性
	String name;
	private int age;//private私有 修饰符 私有属性只能在本类使用,其他类不能使用
	private String gender;	
	public Person1(String name, int age, String gender) {
    
    
		this.name = name;
		this.age = age;
		this.gender = gender;
	}
	//方法
	public Person1() {
    
    
		super();		
	}
	//设定一个方法 专门用来设置年龄
	public void setAge(int age) {
    
    
		if(age>=0 && age<=150) {
    
    //数据永远在想要的范围内,提高了数据的安全性
			this.age = age;
		}else {
    
    
			System.out.println("年龄超范围,请重新设定");
		}
	}
	//调用者想要得到年龄
	public int getAge() {
    
    
		return age;
	}
	public void setGender(String gender) {
    
    
		if("男".equals(gender) || "女".equals(gender)) {
    
    
			this.gender = gender;
		}else {
    
    
			System.out.println("性别超范围,请重新设定");
		}
	}
	public String getGender() {
    
    
		return this.gender;
	}
}
public class Test4 {
    
    
	public static void main(String[] args) {
    
    

		Person1 p = new Person1();
		p.name = "张三";	
		p.setAge(6);
		System.out.println(p.getAge());
		p.setGender("男");
		System.out.println(p.getGender());		
	}
}

猜你喜欢

转载自blog.csdn.net/Echoxxxxx/article/details/111936295