JAVA——面向对象-封装

目录

面向过程:主要关注点是实现的具体过程,因果关系【集成显卡的开发思路】

面向对象:主要关注点是主要关注对象【独立体】能完成哪些功能。【独立显卡的开发思路】

面向对象的三大特征:

类与对象的关系

对象的创建和使用:

内存空间解释:

方法区内存:

栈内存(局部变量):

堆内存:

面向对象封装性

封装的步骤:

1.属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问

2.对外提供简单的操作入口,也就是说以后外部程序要想访问age属性,必须通过这些简单的入口进行访问

3.set方法的命名规范:

4.get方法命名规范:

注意:

关于java类中的构造方法:


面向过程:主要关注点是实现的具体过程,因果关系【集成显卡的开发思路】

优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低。

缺点:采用面向过程的方式开发很难解决非常复杂的业务逻辑,

面向过程的方式导致软件元素之间的"耦合度"非常高,只要其中一环出问题,整个系统受到影响,导致最终的软件扩展力差另由于没有独立体的概念,所以无法达到组件复用性的功能

面向对象:主要关注点是主要关注对象【独立体】能完成哪些功能。【独立显卡的开发思路】

优点:耦合度低,扩展力强,更容易解决现实世界当中更复杂的业务逻辑,组件复用性强

 缺点:前期投入成本较高,需要进行独立体的抽取,大量的系统分析与设计

C语言是纯面向过程的,C++半面向对象,JAVA纯面向对象

目前一些新的编程语言大多数是面向对象的,人认识现实世界是以面向对象的方式,面向对象更符合人的思维方式

面向对象的三大特征:

所有面向对象的编程语言都有这三大特征

封装

继承

多态

面向对象的方式开发软件,生命周期当中有三个阶段:(整个生命周期中贯穿使用OO面向对象方式)

面向对象的分析:OOA

面向对象的设计:OOD

面向对象的编程:OOP

类与对象的关系

类--【实例化】-->对象 对象又被称为实例instance

对象--【抽象化】-->类

对象的创建和使用:

通过一个类可以实例化多个对象

实例化对象的语法: new 类名();

new运算符的作用是创建对象,在JVM堆内存中开辟新的内存空间

内存空间解释:
方法区内存:

在类加载的时候,class字节码代码片段被加载到该内存空间当中

栈内存(局部变量):

方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中 的压栈

堆内存:

new的对象在堆内存中存储

创建一个Student的类:

实例化Student类------使之成为一个Student对象:Student s= new Student()

student是一个自定义的引用数据类型

s是一个变量名,局部变量,在栈内存中存储

new Student()是一个学生对象

对象:new运算符在堆内存中开辟的内存空间称为对象

引用:引用是一个变量,只不过这个变量中保存了另一个JAVA对象的内存地址

JAVA语言当中,程序员不能直接操作堆内存,JAVA中没有指针,与C语言不同

JAVA语言当中,程序员只能通过引用去访问堆内存当中对象内部的实例变量

访问实例变量的语法格式

读取数据:引用.变量名

修改数据:引用.变量名 = 值

面向对象封装性

封装的步骤:
1.属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问

//属性私有化private

private int age ; 

2.对外提供简单的操作入口,也就是说以后外部程序要想访问age属性,必须通过这些简单的入口进行访问

对外提供两个公开的方法,分别是set和get

想修改属性,调用set方法

想读取属性,调用get方法

3.set方法的命名规范:

 public void set 属性名(形参){    //属性名首字母大写

   …… 

 }

即: public void setAge(int a){

         }

public void setAge(int a) {              //set方法设置属性值
		if(a<0 || a>100) {
			System.out.println("输入年龄不合法");
			return;
		}
		age = a;	
	}
4.get方法命名规范:

public  int  getAge(){      //获取age属性

      return age;

}


一个属性的几种访问形式:

1.读取属性的值——get

2.修改属性的值——set


注意:

setter and getter方法没有static关键字

有static关键字修饰的方法怎么调用: 类名.方法名(实参);

没有static关键字修饰的方法怎么调用: 引用.方法名(实参);

关于java类中的构造方法:

1.构造方法又被成为构造函数/构造器/Constructor

2.构造方法语法结构:

          [修饰符列表构造方法名形式参数列表){

                   //构造方法体;

          }

3.回顾普通方法的语法结构:

               [修饰符列表] 返回值类型 方法名形式参数列表){

                        //方法体;

                }

4.对于构造方法来说,返回值类型不需要指定,并且也不能写void ,只要写上void,那么这个方法就成为普通方法了

5.对于构造方法来说,构造方法的方法名必须与类名保持一致

6.构造方法的作用:构造方法存在的意义是通过构造方法的调用,可以创建对象

7.构造方法应该怎么调用

(1)普通方法调用:

修饰符中有static时: 类名.方法名(实参列表)

修饰符中没有static时: 引用.方法名(实参列表)

(2)构造方法调用:

new 构造方法名(实参列表)

8.构造方法执行结束之后,有返回值吗

每一个构造方法实际上执行结束之后都有返回值,但是这个"return 值;"这样的语句不用写,构造方法结束的时候java程序自动返回值

并且返回值类型是构造方法所在类的类型。由于构造方法的返回值类型就是类本身,所以返回值类型不需要编写

public class User {
	//属性——成员变量之实例变量
	//用户编号
	int no;  //no是实例变量
	//用户名
	String name;  //String是一种引用数据类型,代表字符串  name是实例变量 是引用
	//家庭住址
	Address addr;  //Address是一种引用数据类型,代表家庭住址  addr是实例变量 是引用
	               //定义在类Address中


    public User() {}   //无参数构造方法 
	
	public User(int no,String name,Address addr) {      //带参数构造方法
		this.no = no;
		this.name = name;
		this.addr = addr;
	}
}









//家庭住址类
public class Address {
	//与User类中同理
	String city;
	String street;
	String zipcode;
	

}

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值