从零开始的"E"世界(J2SE)

JavaNote3

1.面向对象

  • 面向对象三大特征:

    • 1:封装(Encapsulation)
    • 2:继承(Inheritance)
    • 3:多态(Polymorphism)
  • 封装是指将对象的实现细节隐藏起来,然后通过公共的方法来向外暴露该对象的功能。

  • 继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类是一种特殊的父类,能直接或间接获得父类里的成员。

  • 多态是可以直接把子类对象赋给父类变量,但是运行时依然表现出子类的行为特征,这意味着同一类型的对象在运行时可能表现出不同的行为特征。


2.封装

2.1 面向对象概念
  • 面向对象是相对面向过程而言
  • 面向对象和面向过程都是一种思想
  • 面向过程
    • 强调的是功能行为
  • 面向对象
    • 将功能封装进对象,强调具备了功能的对象。

面向对象是基于面向过程的。


2.2 类与对象的关系
  • 对象用计算机语言对问题域中事物的描述,对象通过“属性(attribute)”和“方法(method)”来分别对应事物所具有的静态属性和动态属性。
  • 类是用于描述同一类形的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性。
  • 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
  • java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。对象即是该类事物实实在在存在的个体。

2.3 封装
  • 封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

  • 好处

    • 将变化隔离。
    • 便于使用。
    • 提高重用性。
    • 提高安全性。
  • 封装原则
    • 将不需要对外提供的内容都隐藏起来。
    • 把属性都隐藏,提供公共方法对其访问。
  • private(私有)关键字
    • private关键字
      • 是一个权限修饰符。
      • 用于修饰成员(成员变量和成员函数)
      • 被私有化的成员只在本类中有效。
    • 常用之一:
      将成员变量私有化,对外提供对应的set ,get方法对其进行访问。提高对数据访问的安全性。

2.4 构造函数
  • 特点:
    • 1.函数名与类名相同
    • 2.不用定义返回值类型
    • 3.不可以写return语句
  • 作用
    给对象进行初始化。
  • 注意
    1. 默认构造函数的特点。
    2. 多个构造函数是以重载的形式存在的。

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学习网址

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值