JavaSE 封装

JavaSE(1).封装

放寒假之后学了一小点JavaSE,所以今天总结一下之前学的内容

Java与C一个很大的区别就是C是面向过程的语言而Java是面向对象

面向对象:三个特征:封装、继承、多态

以后开发:其实就是找对象使用。没有对象,就创建一个对象。找对象,建立对象,使用对象,维护对象。

从一个主函数说起
主函数:是一个特殊的函数。作为程序的入口,可以被jvm调用,jvm在调用主函数时,传入的是new String[0];

class
{
	public static void main(String[] args)
	{
		System.out.println("Hello World");
	}
}

1.class:类
(1).定义:对现实生活中事物的描述
2.对象
(1).定义:对某类事物,实实在在存在的个体
(2).与类的关系:

  • 现实中存在的对象:张三、李四(java在堆内存中用new建立的实体 )
  • 类(对他们的描述):提取对象中的共性内容,对具体的抽象,如,他们都是人(class Person)
  • 描述的具体内容:姓名,年龄,性别,说话功能

3.public-------private
(1).public:代表着该函数的访问权限已经是最大的
(2).private:私有,权限修饰符,用于修饰类中的成员(成员变量,成员函数),私有只有本类可以访问
两种访问私有的方式

  • set(设置)
  • get(获取)
class Person
{
	private int age;
	public void setAge(int a)//set获取法
	{
		age=a;
	}
	public int getAge()//get获取法
	{
		return age;
	}
}

4.static(静态)
(1).定义:是一个修饰符,用于修饰成员(成员变量,成员函数)当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。类名.静态成员
(2).特点:

  • 随着类的加载而加载。
    也就是说:静态会随着类的消失而消失。说明它的生命周期最长

  • 优先于对象存在
    明确一点:静态是先存在的,对象是后存在的

  • 被所有对象所共享

  • 可以直接被类名所调用

(3).实例变量和类变量的区别

  • 存放位置
    类变量随着类的加载而存在于方法区中(加了static的)
    实例变量随着对象的建立而存在于堆内存中(不加static的)

  • 生命周期
    类变量生命周期最长,随着类的消失而消失
    实例变量生命周期随着对象的消失而消失

(4).静态使用注意事项

  • 静态方法只能访问静态成员
    非静态方法既可以访问静态也可以访问非静态

  • 静态方法中不可以定义this,super关键字
    因为静态优先于对象存在,所以静态方法中不可以出现this

(5).静态利弊:

  • 利:对对象的共享数据进行单独空间的储存,节省空间,没有必要对每一个对象都储存一份。可以直接被类名调用
  • 弊:生命周期过长
    访问出现局限性。(静态虽好,只能访问静态)

(6).静态的使用情况:
从两方面下手:因为静态修饰的内容有成员变量和函数

  • 定义静态变量:当对象中出现共享数据时,该数据被静态所修饰,对象中的特有数据要定义成非静态存在于堆内存中
  • 定义静态函数:当功能内部没有用到此类中的非静态数据(对象的特有数据)时
class Person
{
	String name;
	public static void show()//可以定义成static,因为没有涉及到此类中的特有数据`在这里插入代码片`
	{
		System.out.println("haha");
	}
}

(7).应用:
每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用(如:将数组的各种功能建立成ArrayTool类,数组由用户传入,不使用类中非静态数据,此处就可用static修饰函数)
(8).静态代码块
特点:随着类的加载而执行,只执行一次,用于给类进行初始化
5.构造函数
(1).特点:

  • 函数名与类名相同
  • 不用定义返回值类型
  • 不可以写return语句

(2).作用:用于给对象进行初始化

(3).小细节:

  • 当一个类没有自定义构造函数时,那么系统会默认给类加入一个空参数的构造函数
  • 当类中自定义了构造函数后,默认的构造函数就没有了

(4).构造函数和一般函数的区别

  • 写法
  • 运行:构造函数是在对象一建立就运行,给对象初始化;一般函数是对象调用才执行,是给对象添加对象具备的功能//一个对象建立,构造函数只运行一次;而一般方法可以被该对象调用多次

(5).定义构造函数场合:当分析事物时,该事物具备一些特性或行为,那么将这些内容定义在构造函数中

(6).构造代码块是给所有对象进行统一初始化的,而构造函数是给对应的对象初始化

class Person
{
	private String name;
	private int age;
	//Person(){}初始化语句,没有初始化时系统默认加
	{
		System.out.println("hello");
	}//构造代码块
	Person(String name)
	{
		this.name=name;
	}
	Person(String name,int age)
	{
		this.name=name;
		this.age=age;
	}
	public void speak()
	{
		System.out.println("age="+this.age+"   ...name="+name);
	}
}
class
{
	public static void main(String[] args)
	{
		Person A=new Person("LiSi");
	}
}

6.单例设计模式:解决一个类中只存在一个对象的情况
(1).饿汉式(先初始化对象)
Single类一进内存,就已经创建好了对象

class Single
{
	private static Single s=new Single();
	private Single(){}
	public static Single getInstance()
	{
		return s;
	}
}

在这里插入图片描述
(2).懒汉式
对象是方法被调用时,才初始化,也叫做对象的延时加载。
Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象

class Single
{
	private static Single s=null;
	private Single(){}
	public static Single getInstance()
	{
		if(s==null)
			s=new Single();
		return s;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值