每日一练——2018/02/01

本文详细解析了方法重载与重写的区别,包括它们的应用条件及限制,同时对比了抽象类与接口的特点,以及private修饰符的作用范围等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重载与重写的区别,重载的方法可以改变返回值类型吗?

重载:方法重载是让类以统一的方式处理不同类型数据的一种手段。方法重载是指在一个类中,多个方法的方法名相同,但“参数列表”不同。参数列表不同是指参数个数,参数类型或者参数顺序不同。

  1. 使用重载,必须具有不同的参数列表。
  2. 不能通过访问权限,返回类型,抛出异常进行重载。

重写:子类继承父类,子类需要对父类方法进行扩展,增加功能。这种操作方法称为重写。
1. 父类的参数列表必须与子类重写的方法的参数列表相同。
2. 返回值类型必须相同。
3. 子类重写的方法不能比父类拥有更严格的访问权限(如:父public,子private,报错)。
4. 重写方法一定不能抛出新的检查异常或者比被重写方法声明更加宽泛的检查异常(如:父 IOException ,子 Exception ,报错)。

抽象类与接口的区别?

相似性:

都不能被实例化,都可以包含抽象方法,实现接口或继承抽象类的普通子类必须实现这些抽象方法。

区别:

1、接口只能包含抽象方法,不能为普通方法提供方法实现,抽象类可以。
2、接口只能定义静态常量,不能定义普通成员变量,抽象类两者都可以。
3、接口不能包含构造器,抽象类可以包含。
4、一个类最多只能有一个抽象父类,但可以实现多个接口。

private 的作用范围?

除了 class 自己之外任何人都不可以直接使用。

string 与 stringBuffer 的区别?

string 为字符串常量,一旦创建之后该对象是不可更改的。stringBuffer 是字符串变量,对象可以改变。
string对象操作实际是一个不断创建新对象,并且将旧对象回收的过程,执行速度慢。stringBuffer 进行操作是直接对该对象进行更改。
string:适用于少量的字符串操作的情况。
stringBuffer:适用于多线程下在字符缓冲区进行大量操作的情况。

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1;s1 += 1;有什么错?

对于 short s1 = 1;s1 = s1 + 1;由于 s1 + 1 运算时会自动提升表达式的类型,所以结果是 int 行,在赋值给 short 类型 s1 时,编译器将报告需要强制转换类型的错误。
对于 short s1 = 1;s1 +=1;由于 += 是 java 语言规定的 运算符,java 编译器会对它进行特殊处理,因此可以正确编译。

### 4皇后问题的回溯算法解决方案 #### 理论基础 在解决4皇后问题时,采用的是经典的回溯算法。该方法旨在逐行放置皇后,并利用`isValid`函数来验证每一步操作的安全性[^3]。 #### Python实现代码 下面是一个完整的Python程序用于求解4皇后问题: ```python def solve_n_queens(n): def isValid(row, col, cols): for i in range(row): if cols[i] == col or abs(cols[i] - col) == abs(i - row): return False return True def backtrack(row, cols, result): if row == n: board = [['.' for _ in range(n)] for _ in range(n)] for r, c in enumerate(cols): board[r][c] = 'Q' result.append([''.join(row) for row in board]) return for col in range(n): if isValid(row, col, cols): cols[row] = col backtrack(row + 1, cols, result) results = [] backtrack(0, [-1]*n, results) return results if __name__ == "__main__": solutions = solve_n_queens(4) print(f"Total Solutions: {len(solutions)}\n") for idx, solution in enumerate(solutions, start=1): print(f"Solution #{idx}:") for line in solution: print(line) print() ``` 此段代码定义了一个`solve_n_queens`函数接收棋盘大小作为参数并返回所有可能的摆放方式列表。内部嵌套两个辅助函数:一个是用来判断某位置是否安全(`isValid`);另一个则是核心逻辑所在——递归地尝试不同路径直至找到可行解(`backtrack`)。 当执行这段脚本时会打印出所有的解法以及总数,在这里特别针对了4×4的小型棋盘进行了测试[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值