Java——面向对象基础

简介: Java——面向对象基础!

1. 类和对象

1.1 概念

对象:能够看得到摸得着的真实存在的实体。

类:对现实生活中一类具有共同属性和行为的事物的抽象。

类的特点:

(1)类是对象的数据变形

(2)类是具有相同属性和行为的一组对象的集合

属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值。

行为:对象能够执行的操作。

类是对象的抽象,对象是类的实体。


1.2 类的定义

类的重要性:是Java程序的基本组成单位

类:对现实生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为。

类的组成:属性和行为

属性:在类中通过成员变量来体现(类中方法外的变量)

行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)

类的定义步骤:

(1)定义类

(2)编写类的成员变量

(3)编写类的成员方法

publicclass类名{
//成员变量变量1的数据类型变量1;
变量2的数据类型变量2;
……//成员方法方法1;
方法2;
……}


手机类:

packagecom.xuexi;
publicclassPhone {
Stringbrand;
intprice;
publicvoidcall(){
System.out.println("打电话");
    }
publicvoidsendMessage(){
System.out.println("发短信");
    }
}

1.3  对象的使用

创建对象:

格式:

类名对象名=new类名();


范例:

Phonep=newPhone();


使用对象:

(1)使用成员变量:

格式:

对象名.变量名


范例:

p.brand


(2)使用成员方法:

格式:

对象名.方法名()


范例:

p.call()


手机测试类(main方法):

packagecom.xuexi;
publicclassPhoneDemo {
publicstaticvoidmain(String[] args) {
//创建对象Phonep=newPhone();
//使用成员变量System.out.println(p.brand);
System.out.println(p.price);
p.brand="米";
p.price=1234;
System.out.println(p.brand);
System.out.println(p.price);
//使用成员方法p.call();
p.sendMessage();
    }
}


运行结果:

null01234打电话发短信

2. 成员变量和局部变量

2.1 什么是成员变量和局部变量

成员变量:类中方法外的变量(name,age)

局部变量:方法中的变量(i,j)

在这里插入图片描述


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

在这里插入图片描述

3. 封装

3.1 private关键字

是一个权限修饰符;可以修饰成员(成员变量和成员方法);作用是保护成员不受别的类使用,被private修饰的成员只在本类中才能访问。

针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作:

(1)提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰;

(2)提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰。

示例:

packagecom.xuexi1;
publicclassStudent {
Stringname;
//int age;privateintage;
//set赋值,用voidpublicvoidsetAge(inta){
if(a<0||a>120){
System.out.println("错误");
        }else{
age=a;
        }
    }
//get返回值,用intpublicintgetAge(){
returnage;
    }
publicvoidstudy(){
System.out.println("好好学习");
    }
publicvoiddoHomework(){
System.out.println("天天向上");
    }
}


packagecom.xuexi1;
publicclassStudentDemo {
publicstaticvoidmain(String[] args) {
Students=newStudent();
//System.out.println(s.name+","+s.age);s.name="小明";
//s.age = 10;s.setAge(-30);
//System.out.println(s.name+","+s.age);s.study();
s.doHomework();
    }
}


运行结果:

错误好好学习天天向上


3.2 private关键字的使用

一个标准类的缩写:

把成员变量用private修饰;

提供对应的getXxx()/setXxx()方法

在这里插入图片描述


packagecom.xuexi1;
publicclassStudent1 {
privateStringname;
privateintage;
publicvoidsetName(Stringn) {
name=n;
    }
publicStringgetName() {
returnname;
    }
publicvoidsetAge(inta) {
age=a;
    }
publicintgetAge() {
returnage;
    }
publicvoidshow() {
System.out.println(name+","+age);
    }
}

在这里插入图片描述


3.3 this关键字

(1)this修饰的变量用于指代成员变量

方法的形参如果与成员变量同名,不是this修饰的变量指的是形参,而不是成员变量;

方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量

在这里插入图片描述

(2)使用this时间:解决局部变量隐藏成员变量

(3)this:代表所在类的对象引用

方法被哪个对象调用,this就代表哪个对象


3.4 封装

3.4.1 封装概述

是面向对象三大特征之一(封装、继承、多态);

是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的。


3.4.2 封装原则

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

如:成员变量是private,提供对应的getXxx()/setXxx()方法


3.4.3 封装好处

(1)通过方法来控制成员变量的操作,提高了代码的安全性;

(2)把代码用方法进行封装,提高了代码的复用性。

4. 构造方法

4.1 构造方法概述

构造方法是一种特殊的方法

作用:创建对象

功能:主要是完成对象数据的初始化

格式:publicclass类名{
修饰符类名(参数){
    }
}

在这里插入图片描述


4.2 构造方法的注意事项

(1)构造方法的创建

如果没有定义构造方法,系统将给出一个默认的无参构造方法;

如果定义了构造方法,还要使用无参构造方法,就必须再写一个无参构造方法

(2)构造方法的重载

如果自定义了带参构造方法,还要使用无参构造方法,就必须再写一个无参构造方法

(3)推荐的使用方式

无论是否使用,都手工书写无参构造方法

packagecom.xuexi2;
publicclassStudent {
privateStringname;
privateintage;
publicStudent(Stringname,intage){
this.name=name;
this.age=age;
    }
publicvoidshow(){
System.out.println(name+","+age);
    }
}


packagecom.xuexi2;
publicclassStudentDemo {
publicstaticvoidmain(String[] args) {
Students=newStudent("小明",10);
s.show();
    }
}


小明,10


4.3 标准类制作

(1)成员变量:

使用private修饰

(2)构造方法:

提供一个无参构造方法;

再提供一个带多个参数的构造方法

(3)成员方法:

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

提供一个显示对象信息的show()

(4)[测试类中]创建对象并为其成员变量赋值的两种方式:

无参构造方法创建对象后使用setXxx()赋值;

使用带参构造方法直接创建带有属性值的对象

packagecom.xuexi2;
publicclassStudent {
//成员变量privateStringname;
privateintage;
//构造方法publicStudent() {
    }
publicStudent(Stringname, intage) {
this.name=name;
this.age=age;
    }
//成员方法publicvoidsetName(Stringname) {
this.name=name;
    }
publicStringgetName() {
returnname;
    }
publicvoidsetAge(intage) {
this.age=age;
    }
publicintgetAge() {
returnage;
    }
publicvoidshow() {
System.out.println(name+","+age);
    }
}


packagecom.xuexi2;
publicclassStudentDemo {
publicstaticvoidmain(String[] args) {
//无参构造方法创建对象后使用setXxx()赋值Students1=newStudent();
s1.setName("小明");
s1.setAge(10);
s1.show();
//使用带参构造方法直接创建带有属性值的对象Students2=newStudent("小明",10);
s2.show();
    }
}


小明,10小明,10


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