对象和封装

本文详细介绍了Java中的面向对象概念,包括类与对象的关系、封装的原理和好处、构造方法和重载、重写的概念,以及this、static和final等关键字的应用。强调了封装在隐藏对象细节、确保数据安全方面的重要性,同时阐述了如何通过访问修饰符控制类成员的访问级别。
摘要由CSDN通过智能技术生成

类是面向对象中的一个很重要的概念,因为类是很多个具有相同属性和行为特征的对象所抽象出来的,对象是类的一个实例。

类具有三个特性:封装、继承和多态。

三大特征:

  • 封装:核心思想就是“隐藏细节”、“数据安全”,将对象不需要让外界访问的成员变量和方法私有化,只提供符合开发者意愿的公有方法来访问这些数据和逻辑,保证了数据的安全和程序的稳定。所有的内容对外部不可见。

  • 继承:子类可以继承父类的属性和方法,并对其进行拓展。将其他的功能继承下来继续发展 。

  • 多态:同一种类型的对象执行同一个方法时可以表现出不同的行为特征。通过继承的上下转型、接口的回调以及方法的重写和重载可以实现多态。方法的重载本身就是一个多态性的体现。

三大思想:

面向对象思想从概念上讲分为以下三种:OOA、OOD、OOP

  • ​ OOA:面向对象分析(Object Oriented Analysis)
  • ​ OOD:面向对象设计(Object Oriented Design)
  • ​ OOP:面向对象程序(Object Oriented Programming )

类与对象:

(1)类是一类事务,是根据一般性抽象出来的;例如:人;动物.

  • 类由属性和方法组成:

    • 属性:就相当于人的一个个的特征

    • 方法:就相当于人的一个个的行为,例如:说话、吃饭、唱歌、睡觉

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

  • 访问类中的属性或方法(方法的定义),则可以依靠以下的语法形式:
    • 访问类中的属性: 对象.属性 ;
    • 调用类中的方法: 对象.方法(实际参数列表) ;
      • 类必须编写在.java文件中;
      • 一个.java文件中,可以存在N个类,但是只能存在一个public修饰的类;
      • .java文件的文件名必须与public修饰的类名完全一直;
      • 同一个包中不能有重名的类;

(2)对象,是类的一个特例、实例。例如:小轿车、卡车、公共汽车等。对象通过new关键字,完成实例化(例如: Student stu = new Student() ; 。
(3)new关键字,其实本质就是申请分配内存,使Student类中的变量、方法都对应分配的内存单元。

面向过程和面向对象的区别:

面向过程 面向对象
区别 事物比较简单,可以用线性的思维去解决 事物比较负载,使用简单的线性思维无法解决
共同点 使用面向对象的思维 使用,面向过程来处理
优点: 性能高,流程和步骤清晰,容易理解 易扩展、代码复用率高、利于后期扩展和维护,提升开发效率
不足: 复用率低,扩展性差,维护难度高 一定程度上增加系统开销

面向对象程序设计的基本步骤:

  1. 发现类
  2. 发现类的属性
  3. 发现类的方法

类图:

类图以反映类的结构(属性,操作)及类之间的关系为主要目的,描述软件系统的结构,是一种静态建模的方法

类图包含如下三个组成部分:

  1. 定义的类名,如AppTree,Corn
  2. 类中属性,如AppleTree类中的name,brand等
  3. 类中方法,如print()方法

注意:"+“表示public ,”-“表示private,”#"表示protected

小结:

设计类是需要遵循的原则如下:

  1. 属性和方法是为了解决业务问题设置
  2. 关注主要属性和方法
  3. 如果没有必要,就不要增加额外的类,属性和方法

匿名对象:

  • 没有对象名称的对象就是匿名对象。 即栈内存中没有名字,而堆内存中有对象。
  • 匿名对象只能使用一次,因为没有任何的对象引用,所以将称为垃圾,等待被GC回收。
  • 只使用一次的对象可以通过匿名对象的方式完成,这一点在以后的开发中将经常使用到。
public static void main(String[] args){
   
	//Math2 m=new Math2();
	//int num=m.sum(100,200);
	//不通过创建对象名,直接实例对象调用,这就是匿名对象。因为没有对象名指向对象,所以只能调用一次,然后被GC回收。
	int num = new Math().sum(100,200);
	System.out.println(num);
}
class Math2{
   
	int sum(int x,int y){
   
		return x+y;
	}
}

构造方法(构造器)

  1. 构造方法的作用?

    ​ 用于对象初始化

  2. 语法:Person p = new Person();

    ​ 在右侧Person后面出现的小括号, 其实就是在调用构造方法

    语法:

    [访问修饰符]方法名([参数列表]){

    ​ //…省略方法体的代码

    }

  3. 执行时机:

    ​ 在创建对象时,自动调用

  4. 特点

    • 所有的Java类中都会至少存在一个构造方法

    • 如果一个类中没有明确的编写构造方法, 则编译器会自动生成一个无参的构造方法, 构造方法中没有任何的代码!

    • 如果自行编写了任意一个构造器, 则编译器不会再自动生成无参的构造方法。

    无参构造方法和有参构造方法:

    1. 无参构造方法: 生成初始化对象,属性都是默认值,系统默认提供
    2. 有参构造方法:生成初始化对象,属性都是实参提供,当你显示声明了有参构造方法
  5. 定义格式

    • 与普通方法基本相同, 区别在于: 方法名称必须与类名相同, 没有返回值类型的声明 ;

    • 建议自定义无参构造方法,不要对编译器形成依赖,避免错误发生。

    • 当类中有非常量成员变量时,建议提供两个版本的构造方法,一个是无参构造方法,一个是全属性做参数的构造方法。

    • 当类中所有成员变量都是常量或者没有成员变量时,建议不提供任何版本的构造。

/*
苹果树种类
  */

public class AppleTree {
   
    public String name="苹果树"; //名称
    public String brand;//品种
    public int growTime=
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值