Java面向对象04
Java 面向对象04
接口
-
普通类:只有具体实现
-
抽象类:具体实现的规范[抽象方法]都有!
-
接口:只有规范!自己无法写方法专业的约束!约束和实现分离:面向接口编程
-
接口就是规范,定义的是一组规则,体现了现实世界中“如果你是...则必须能...”的思想。
-
接口的本质是七月,就像我们的法律一样。制定好后大家都遵守。
-
OO[面向对象]的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计 模式都只针对具备了抽象能力的语言(比如C++、Java、C#等),就是因为设计模式所研究的。
声明接口的关键字是 interface
代码示例:
接口:
类
//抽象类 extends
//类 可以实现接口 implements 接口
//实现了接口的类,必须重写接口中的方法
//利用接口实现多继承
public class UserServiceImpl implements UserService,TimeService{
@Override
public void timer() {
}
@Override
public void add(String name) {
}
@Override
public void delete(String name) {
}
@Override
public void update(String name) {
}
@Override
public void query(String name) {
}
}
UserService
//interface 关键字
public interface UserService {
//常量
int Age = 99;
//接口的所有定义都是抽象的public
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
TimeService
public interface TimeService {
void timer();
}
接口的作用:
- 约束
- 定义一些方法,让不同的人实现~
- public abstract
- public static final
- 接口不能被示例化,接口中没有构造方法
- implements可以实现多个接口
拓展:面向对象的23种模式
内部类
- 内部类就是在一个类的内部再定义一个类,不如在A中定义一个B类,那么B类相对于A类是其的内部类,而A类相对B类来说就是外部类了
代码:
mian()
import oop.Demo10.Outer;
public class Application {
public static void main(String[] args) {
//new
Outer outer = new Outer();
//通过外部类来实例化内部类
Outer.Inner inner = outer.new Inner();
inner.getId();//若为静态内部类则无法获得ID,因为Static关键字先执行
}
}
- 成员内部类
public class Outer {
private int ID = 10;
public void out(){
System.out.println("outer!");
}
public class Inner{
public void in(){
System.out.println("Inner!");
}
//获得外部类的私有属性
public void getId(){
System.out.println(ID);
}
}
}
- 静态内部类
public class Outer {
private int ID = 10;
public void out(){
System.out.println("outer!");
}
public static class Inner{
public void in(){
System.out.println("Inner!");
}
}
}
- 局部内部类
public class Outer {
//局部内部类
public void method(){
class Inner{
public void in(){
}
}
}
}
- 匿名内部类
public class Outer {
public static void main(String[] args) {
//没有名字初始化,不用将示例保存在变量中
new Apple().eat();
new UserService(){
@Override
public void Hello() {
}
};
}
}
class Apple{
public void eat(){
System.out.println("eat!");
}
}
interface UserService{
void Hello();
}
public class Outer {
public static void main(String[] args) {
}
}
//一个Java类中可以有多个class类,但只能有一个public class
class A{
public static void main(String[] args) {
}
}
Java基础总结自狂神说Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】