JavaNote3
1.面向对象
面向对象三大特征:
- 1:封装(Encapsulation)
- 2:继承(Inheritance)
- 3:多态(Polymorphism)
封装是指将对象的实现细节隐藏起来,然后通过公共的方法来向外暴露该对象的功能。
继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类是一种特殊的父类,能直接或间接获得父类里的成员。
多态是可以直接把子类对象赋给父类变量,但是运行时依然表现出子类的行为特征,这意味着同一类型的对象在运行时可能表现出不同的行为特征。
2.封装
2.1 面向对象概念
- 面向对象是相对面向过程而言
- 面向对象和面向过程都是一种思想
- 面向过程
- 强调的是功能行为
- 面向对象
- 将功能封装进对象,强调具备了功能的对象。
面向对象是基于面向过程的。
2.2 类与对象的关系
- 对象用计算机语言对问题域中事物的描述,对象通过“属性(attribute)”和“方法(method)”来分别对应事物所具有的静态属性和动态属性。
- 类是用于描述同一类形的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性。
- 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
- java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。对象即是该类事物实实在在存在的个体。
2.3 封装
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
- 将变化隔离。
- 便于使用。
- 提高重用性。
- 提高安全性。
- 封装原则
- 将不需要对外提供的内容都隐藏起来。
- 把属性都隐藏,提供公共方法对其访问。
- private(私有)关键字
- private关键字:
• 是一个权限修饰符。
• 用于修饰成员(成员变量和成员函数)
• 被私有化的成员只在本类中有效。 - 常用之一:
• 将成员变量私有化,对外提供对应的set ,get方法对其进行访问。提高对数据访问的安全性。
- private关键字:
2.4 构造函数
- 特点:
- 1.函数名与类名相同
- 2.不用定义返回值类型
- 3.不可以写return语句
- 作用:
给对象进行初始化。 - 注意:
- 默认构造函数的特点。
- 多个构造函数是以重载的形式存在的。
2.5 this关键字
- 特点:this代表其所在函数所属对象的引用。
- 换言之:this代本类对象的引用。
- 什么时候使用this关键字呢?
- 当在函数内需要用到调用该函数的对象时,就用this。
- this可以表示当前对象
- this可以访问构造方法(注意:this调用只能放在构造放法的第一行)
2.6 static关键字
- static关键字:(修饰成员变量时,可以实现数据共享)
- 用于修饰成员(成员变量和成员函数)
- 被修饰后的成员具备以下特点:
- 随着类的加载而加载
- 优先于对象存在
- 被所有对象所共享
- 可以直接被类名调用
- 使用注意
- 静态方法只能访问静态成员
- 静态方法中不可以写this,super关键字
- 主函数是静态的
3.代码块
- 普通代码块
public static void main(String[] args) {
{ //定义了一个普通代码块
int x = 30; //定义了局部变量
System.out.println("普通代码块 --> x = " + x);
}
int x = 100; //与局部变量名相同
System.out.println("代码块之外 --> x = " + x);
}
- 构造代码块:构造代码块先于构造方法执行
class Demo {
{ //定义构造块
System.out.println("1、构造块。");
}
public Dome() { //定义构造方法
System.out.println("2、构造方法。");
}
}
public class CodeDemo02 {
public static void main(String[] args){
new Demo(); //实例化对象
new Demo(); //实例化对象
new Demo(); //实例化对象
}
}
- static代码块:(静态代码块先于主方法执行,在类中静态代码块先于构造代码块执行,代码块又先于构造方法执行)
public class StaticDemo1 {
static {
System.out.println("main代码块");
}
public static void main(String[] args) {
new Person();
}
}
class Person {
{
System.out.println("代码块");
}
static {
System.out.println("static代码块");
}
public Person(){
System.out.println("构造方法!");
}
}
4.单例设计模式
- 单例设计模式(饿汉式和懒汉式)
- 饿汉式
class Single {
static Single s = new Single();
private Single(){}
public static Single made(){
return s;
}
}
- 懒汉式
class Single {
static Single s = null;
private Single(){}
public static Single made(){
if(s == null) {
s = new Single();
}
return s;
}
}
最后附上Java学习网址