Java 01对象和封装

面向对象概述
面向对象的思想:将世界存在的任何事物都看作一个对象,每个对象拥有自己的属性和行为,面向对象就是“现实模拟”的方式开发设计程序,而面向对象的核心是类,通过调用类的方法来实现各种操作。

面向思想的程序设计
1.抽象出多个类
2.发现类的属性
3.定义类的行为(方法)

创建对象

SE se=new SE(); //创建SE类的对象se

构造方法和重载

public class SE{ 
        public String name;
	public int age;
	
	public SE(){}//一个无参的构造方法

	public SE(String n,int a){//有参的构造方法
	this.name=n;
	this.age=a;
	}
	//构造方法通常用于完成类属性的初始化工作,方法名与类名相同,多个相同的名称,但参数类型和参数个数顺序不同的方法构成了方法重载。
}

一个类在创建时系统会隐式的分配给类一个无参的构造方法,如果显示定义了一个有参的构造方法,那么无惨的构造方法就不存在了,需要显示的声明才能使用!
static修饰符的使用
static 可用于修饰类、方法、属性,static修饰的方法、属性称为类属性类方法,属于本类,而不使用static修饰的方法属于每一个对象称为实例方法、实例属性。

通俗点说就是在使用过程中,static修饰的方法和属性,在调用时可以使用类名.出属性或方法(),也可以通过对象点出属性方法。 而没有static修饰的方法和属性在调用时只能通过对象点出属性和方法。

public class SE{ 
        public static String name; //静态属性
 	public int age; //非静态属性
 	public void info(){
 	//静态字段name赋值
 	name="";
 	SE.name=""this.name=""; // 静态字段不能使用this  编译错误
 	//非静态字段赋值
 	age=18;
 	this.age=18;
 	SE.age=18; //非静态属性不能使用类名点属性赋值 编译错误
 	}
}

//定义测试类
public class Test{
	public static void main(string[] args){
	static String a="小明"; //编译错误 局部方法不能有静态变量 只能定义为全局变量 成为类属性
	SE se=new SE();
	se.age=18;
	se.name=a;//编译错误
	}

}
 

**执行顺序 **
如果在一个类中有静态代码块和非静态代码块以及一个构造方法,那么在类初始化时有着怎样的执行顺序?
在这里插入图片描述可以看到最后结果在程序初始化时首先执行静态代码块,然后非静态,最后才执行了构造方法!

***********必知的堆栈初始化流程

父类静态属性初始化
父类静态块
子类静态属性初始化
子类静态块
父类非静态属性初始化
父类非静态块
父类构造方法
子类非静态属性初始化
子类非静态块
子类构造方法

封装
封装是面向对象的三大特性之一,它将类的状态信息隐藏在类的内部,不允许外部程序直接访问,而是通过类提供的方法间接实现对隐藏类的访问。

封装的实现步骤:修改属性的访问级别,为属性创建一对赋值 setter方法和读取值getter 方法,可在赋值时对属性的取值进行控制。

public class Student{
    private String name;
    private int age;
	public String getName() {
	  return name;
	 }
	 public void setName(String name) {
	  this.name = name;
	 }
	 public int getAge() {
	  return age;
	 }
	 //对age的取值进行约束  避免不合理赋值!
	 public void setAge(int age) {
	    if(age >18){		
 		this.age=age;
	    }else{
		 System.out.println("未成年!");	
 	   }
	 }
******
发布了10 篇原创文章 · 获赞 7 · 访问量 692

猜你喜欢

转载自blog.csdn.net/weixin_44924238/article/details/102937643