【JAVA基础】面向对象基础(下)

简介: 一.构造器二.this关键字 三.封装 四.标准 JavaBean五.补充知识:成员变量、局部变量区别

一.构造器


构造器的作用


用于初始化一个类的对象,并返回对象的地址。


构造器的定义格式

修饰符 类名(形参列表){
...
}
public class Car {
...
// 无参数构造器
public Car(){
...
}
// 有参数构造器
public Car(String n, String b){
...
}

构造器的分类


类型 变量名称 = new 构造器;


无参数构造器(默认存在的):初始化的对象时,成员变量的数据均采用默认值。

有参数构造器:在初始化对象的时候,同时可以为对象进行赋值


注意事项


任何类定义出来,默认就自带了无参数构造器,写不写都有。


一旦定义了有参数构造器,无参数构造器就没有了,此时就需要自己写一个无参数构造器了。


二.this关键字


作用:出现在成员方法、构造器中代表当前对象的地址,用于访问当前对象的成员变量、成员方法


this出现在有参数构造器中的用法:


测试类:

public class base {
    public static void main(String[] args) {
        Car car = new Car("张三",98.0);
        System.out.println(car.name);
        System.out.println(car.price);
    }
}

未引入this:

public class Car {
String name;
double price;
public Car(String n , double b){
name = n;
price = b;
} 
}

引入this:

public class Car {
String name;
double price;
public Car(String name , double price){
this.name = name;
this.price = price; } 
}

测试this的地址:

public class base {
    public static void main(String[] args) {
        Car car = new Car();
        car.run();
        System.out.println(car);
    }
}
public class Car {
    public Car() {
        System.out.println("无参构造中的this:"+this);
    }
    public void run(){
        System.out.println("方法中的this:"+this);
    }
}

故此 this 代表当前对象的地址


三.封装


面向对象的三大特征:封装,继承,多态。


什么是封装? 隐藏实现细节,暴露出合适的访问方式。(合理隐藏、合理暴露)

为什么要用封装?



封装的实现步骤


一般对成员变量使用private(私有)关键字修饰进行隐藏,private修饰后该成员变量就只


能在当前类中访问。


提供public修饰的公开的getter、setter方法暴露其取值和赋值。

public class Student {
    int age;
}

public class Student {
    private int age;
}

不能在其他类中赋值封装的好处小结


加强了程序代码的安全性。


适当的封装可以提升开发效率,同时可以让程序更容易理解与维护。


四.标准 JavaBean


JavaBean


也可以理解成实体类,其对象可以用于在程序中封装数据。


标准 JavaBean 须满足如下要求:`


成员变量使用 private 修饰。


提供每一个成员变量对应的 setXxx() / getXxx()。


必须提供一个无参构造器。


五.补充知识:成员变量、局部变量区别


成员变量和局部变量的区别


区别 成员变量 局部变量


类中位置不同 类中,方法外 常见于方法中


初始化值不同 有默认初始化值 没有,使用之前需要完成赋值


内存位置不同 堆内存 栈内存


生命周期不同


随着对象的创建而存在,随着对象的消失而消失


随着方法的调用而存在,随着方法的运行结束而消失


作用域  在所归属的大括号中


成员变量和局部变量的区别

相关文章
|
1月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
67 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
23天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
14 2
|
2月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
2月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
35 4
|
2月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
1月前
|
存储 Java 程序员
Java基础-面向对象
Java基础-面向对象
17 0
|
2月前
|
安全 Java Go
面向对象程序设计语言:Java
Java语言语法和C语言和C++语言很接近,很容易学习和使用,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的特性,Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧
60 2
|
3月前
|
Java 数据处理 开发者
【Java基础面试十二】、说一说你对面向对象的理解
这篇文章阐述了面向对象是一种以类和对象为基础,通过封装、继承和多态等概念来模拟现实世界中的事物及其相互关系的程序设计方法,它强调以事物为中心进行思考和系统构造,与结构化程序设计相比,更符合人类的自然思维方式。
【Java基础面试十二】、说一说你对面向对象的理解
|
3月前
|
Java
【Java基础面试十三】、面向对象的三大特征是什么?
这篇文章介绍了面向对象程序设计的三大基本特征:封装、继承和多态,其中封装隐藏对象实现细节,继承实现软件复用,多态允许子类对象表现出不同的行为特征。
【Java基础面试十三】、面向对象的三大特征是什么?