Java 面向对象基础

概述 

        面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。

        面向过程是关注过程的编程模式, 需要考虑解决问题所需要的步骤,然后用函数把这些步骤一步一步实现。面向对象是关注对象的编辑模式, 把现实中的事物都抽象为“对象”, 每个对象是唯一的且都可以拥有它的属性与行为, 通过调用这些对象的方法、属性去解决问题。

        面向对象的优势在于可扩展性,可维护性,灵活性,使程序耦合度降低, 缺点是性能比面向过程相对较差。

构造方法

        构造方法是每个类都有的,并且用于创建该类的对象, 如果该类中没有编写构造方法,那么编译器会自动帮我们生成一个无参构造; 如果该类中编写了构造方法,不管写的是不是有参,则默认的无参构造都不再自动生成. 所以当我们在写有参构造的时候,可以手动编写一个无参构造

        语法:  修饰符 方法名/类名(参数列表){方法体}

        构造方法的修饰符只使用权限控制即可,不能使用static构造方法, 而且没有返回值(可以通过有无返回值区分构造方法和成员方法)
        构造方法的方法名必须和类名一致

 类和对象

        类: 对一类事物客观描述的标准
        对象: 一切皆对象,是具体的个体符合类标准的个体

        根据不同属性划分为不同的类, 根据不同的属性值划分不同的对象

对象的使用

        可直接作用在变量上

       未初始化的对象保存的是其内存地址.

public class Student{
        String name;
        int age;
        String no;
}

Student s1 = new Student();
s1.name ="张三";
s1.age = 19;
s1.no = 10001;

JavaBean

        JavaBean是—种JAVA语言写成的可重用组件,它是—个类。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java类可以通过自省机制(反射机制 )发现和操作这些JavaBean的属性。
        用作JavaBean的类必须具有—个公共的、无参数的构造方法。

        JavaBean的属性与普逼Java类的属性的概念不一样, JavaBean的属性是以方法定义的形式出现的.
        用于对属性赋值的方法称为属性修改器或setter方法,用于读取属性值的方法称为属性访问器或getter方法。属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写。属性访问器通常以小写的get前缀开始,后跟属性名,且属性名的第一个字母要改为大写
        JavaBean的属性名是根据setter方法与getter方法的名称来生成的,setter方法或getter方法中除去前缀set 和 get后的部分即为属性名,但属性名的首字母必须小写。

        就是公共的类,私有化的属性,公共的获取属性的方法(getter/setter),公共的无参构造

public class User {
    // 用户名
    private String username;
    // 密码
    private String password;
    // 昵称
    private String nickname;

    // 构造方法
    public User() {
    }//无参构造

    public User(String username, String password) {
    // 有参构造 用于创建对象时 初始化成员变量的值
    this.username = username;
    this.password = password;
    }

    public User(String username, String password, String nickname) {
    // 全参构造
    this.username = username;
    this.password = password;
    this.nickname = nickname;
    }

    // getters and setters 用来获取和修改私有化成员变量的
    public void setUsername(String username) {
    // 成员方法中可以直接访问成员属性
    // this 就是 当前对象,谁调用这个方法,this就是谁
    if (username == "123") {
    username = "sb";
    }//能够进行限制
    this.username = username;
    }

    public String getUsername() {
    return username;
    }

    public String getPassword() {
    return password;
    }

    public void setPassword(String password) {
    this.password = password;
    }

    public String getNickname() {
    return nickname;
    }

    public void setNickname(String nickname) {
    this.nickname = nickname;
    }

}

常见异常 

java.lang.NullPointerException 空指针异常, 是运行时异常

    User user = new User("admin", "root");
    user = null;
    // java.lang.NullPointerException 空指针异常, 是运行时异常
    // 使用null 访问成员属性,就会出现空指针异常
    System.out.println(user.getUsername());

对象调用静态属性

    static int a = 22;
    int b = 33;

    public static void main(String[] args) {
    int a = 1;
    OOP_07 o = new OOP_07();
    System.out.println(o.b);
    // 可以通过对象调用静态属性
    // 调用静态变量,因为在编译时,会自动把o换成对应的类名去调用
    System.out.println(o.a);
    // 调用静态变量
    System.out.println(OOP_07.a);
    // 调用局部变量
    System.out.println(a);
    }

 this

        this是对象中第一个成员变量,保存了当前对象的内存地址. 在成员方法中,谁调用的这个成员方法,this就代表谁. 作用有用在成员方法/构造方法中,区分同名的成员变量和局部变量;  用在构造方法中,重载调用当前类中其他的构造方法;  返回this,用于链式调用.

        this不能出现在静态上下文中.

static

        static是修饰符,用来标注静态属性,如果没有使用static,则为成员属性

        静态语句块不能调用,在程序加载的时候自动调用执行,并且只执行一次(在main方法之前)

        所有的静态属性都是在加载时初始化, 访问一个类的静态属性的时候,会加载该类到内存中, 由于在整个程序生命周期中,类只会被加载一次,所以静态语句块只会执行一次.并且在最开始执行

        实例语句块是没有static修饰的语句块, 可以等同看做没有名字的成员方法. 实例语句块在创建对象时,立刻执行,并且是在构造方法之前执行,并且每创建一个对象,就会执行一次

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值