Skip to content

封装

564字约2分钟

java

2024-10-24

封装

实质:

封装是利用权限修饰符对实现细节的隐藏

作用

1.安全

2.隐藏实现细节,提高代码的可维护性

3.消除调用与实现的耦合性

oop的核心:分解任务

方式:类与封装

类内

三个权限修饰符(public,protucted,private)四个范围

修饰符权限
private(私有)同类可见
默认(不写)包级权限(同一个包内可见)
protected(保护)子类可见(不管同包不同包)
public(公共)权限最大(不同包也可见)

image-20210906100310472image-20210906094504303

强烈建议成员变量使用private

类外

只有public和默认不写

继承

class 子类名 extends 父类名{}

共性抽取(把共有的属性抽取出来) 代码复用

本质是扩展(在父类的基础上扩展)

先有子类再有父类(子类共性---->父类)

缺点:

1.继承是一个白盒复用,会破环封装性

2.比较繁琐和僵化

java的单继承(一个子类只能由=有一个父类)

C++子类对象项父类对象转换不路径唯一过程。java为了避免该问题,限制类的多继承

一个类至少有一个父类(Object)没有显式的继承,隐式继承Object

image-20210906115457469

构造方法

构造方法不是方法

构造方法必须与类同名

如果没有声明构造方法,系统会自动提供一个无参无操作的构造方法

一旦声明构造方法系统不再提供

总结

new是一个运算符,后面只能跟构造方法

构造方法声明中无显式返回类型(理论上有返回值,是这个类的对象)

例:

public class Student {
	private int studentNum;
	private String studentName;
	private double score;
	
	// 使用有参构造函数初始化
	Student(int num,String name,double score){
		setScore(score);
		setStudentName(name);
		setStudentNum(num);
	}
	// 使用无参构造函数初始化
	Student(){
		setScore(1000);
		setStudentName("name");
		setStudentNum(0);
	}
    ..........
}

问题

这里书写今日所遇到问题及解决方法 不要忽略小问题,小问题也要记下来。( 勿以善小而不为 )

吐槽

这里是吐槽部分,内容不限。