当前位置: 首页 > news >正文

SE

SE

1、三大特性

1.1封装

  • 通过private关键字将属性私有。

  • 提供公有get、set方法获取或修改。

1.2继承

  • 继承通过extends关键字,java支持单继承。

  • 子类可添加特有属性。

  • 子类通过super关键字访问父类属性(不能继承父类私有成员和构造方法)。

1.3多态

多态

  • 父类引用指向子类对象。

  • 存在继承关系。

  • 子类重写父类方法。

public abstract class Pet{String name;public Pet(String name) {this.name = name;}public abstract void run();
}
class Dog extends Pet{private int leg = 4;public Dog(String name) {super(name);}public void run() {System.out.println(name+"是小狗,所以它用"+leg+"条腿跑。");}
}
class Dove extends Pet{private int leg = 2;public Dove(String name) {super(name);}public void run(){System.out.println(name+"是鸽子,它有"+leg+"条腿,所以他会飞。");}
}
public class Test {public static void main (String[] args) {Pet dog = new Dog("旺财");Pet dove = new Dove("来财");dog.run();dove.run();}
}

*运行时实际调用的内容由引用类型决定而非引用对象决定。在继承中如果存在调用同名成员变量或者静态方法时,输出的内容实际是父类的变量或者方法。如果是普通的成员方法,实际执行的就是引用对象的方法。

实现多态的方式

  1. 子类重写父类方法。

  2. 抽象类+抽象方法。

  3. 父类定义接口子类实现。

意义

减少代码量。

提高代码可拓展性和可维护性。

1.4抽象

  1. 抽象类定义必须用abstract关键字修饰,且不能被实例化。
  2. 抽象方法必须定义在抽象类或接口内部。
  3. 抽象方法没有方法体。
  4. 抽象方法必须在子类实现。

2、类

2.1类的静态成员

特征

  • 所有对象公有。

  • 没有创建对象也可访问。

  • 可以是属性或者方法。

  • 不可以在实例方法中使用。

3、方法

3.1重载

  • 方法名相同
  • 属性的类型或者个数不同
public class Pet{private String type;private String name;private String food;public static void main (String[] args) {Pet p1 = new Pet();Pet p2 = new Pet();p2.name = "旺财";p2.food = "骨头";p1.eat("小狗", "花花", "骨头");p2.eat("旺财", "狗粮");}public void eat(String name,String food) {System.out.println(name+"正在吃"+food);}public void eat(String type,String name,String food) {System.out.println(type+name+"正在啃"+food);}
}

3.2重写

  • 方法名相同。

  • 参数列表相同。

  • 返回值的类型不同或内容不同。

class Phone {public void showNumber() {System.out.println("显示号码");}
}class SmartPhone extends Phone {// 重写@Override public void showNumber() {super.showNumber(); // 先让父类(显示号码)System.out.println("显示头像"); // 实现子类System.out.println("显示归属地");}
}

重写equals方法

public class User {private int id;private String name;@Overridepublic boolean equals(Object obj) {// 1. 自反性:如果是同一个实例,直接返回 trueif (this == obj) return true;// 2. 非空判断:如果传入对象为 null,直接返回 falseif (obj == null) return false;// 3. 类型检查:判断传入对象是否属于同一个类// 使用 getClass() 比 instanceof 更严格,防止继承导致的问题if (this.getClass() != obj.getClass()) return false;// 4. 强转类型:将 Object 转换为当前类类型User other = (User) obj;// 5. 属性比较:比较关键字段// 基本类型用 ==,引用类型用 Objects.equals() 防止 null 指针return this.id == other.id && Objects.equals(this.name, other.name);}// ⚡️ 重要:重写 equals 必须重写 hashCode!@Overridepublic int hashCode() {return Objects.hash(id, name);}
}

4、接口

  • 支持多继承,一个类可以有多个接口。

  • 不能实例化,不能有构造方法。

  • 接口可以继承接口。

  • 属性是全局静态属性,方法是全局抽象方法。

常见的运行时异常

1、空指针异常,引用指向null对象。

2、输入不匹配异常,要求输入整型输入字符串或浮点型。

3、类型转换异常,把一个对象转换为他不兼容的类型。

4、数组索引越界异常,访问数组的索引超出数组长度。

5、非法参数异常,传入的参数合法不合理,超出要求的参数范围。

try-catch-finally中,finally唯一不执行情况

​ 有System.exit()输出/进程被外部强制中止。

http://www.jsqmd.com/news/188914/

相关文章:

  • PySide6之QListView 学习
  • GitHub汉化插件完整指南:3分钟实现全界面中文
  • BetterJoy终极配置指南:轻松实现Switch手柄的PC游戏革命
  • 游戏汉化终极指南:XUnity翻译器完全使用手册
  • TranslucentTB完整指南:3步实现Windows任务栏透明美化
  • C++11 STL常用算法
  • League Akari完整指南:快速掌握英雄联盟终极自动化工具
  • 英雄联盟智能助手League Akari:3分钟掌握高效游戏新姿势
  • LeagueAkari英雄联盟助手:新手必备的完整使用教程
  • XUnity自动翻译器:Unity游戏本地化解决方案详解
  • 强烈安利10个AI论文平台,专科生轻松搞定毕业论文!
  • NVIDIA Profile Inspector终极教程:快速掌握显卡性能优化秘诀
  • 英雄联盟终极自动化神器:LeagueAkari 快速上手指南
  • NVIDIA Profile Inspector深度解析:如何快速掌握显卡性能调优的完整指南
  • MAA明日方舟智能辅助工具:高效自动化解决方案全面解析
  • XUnity自动翻译器终极指南:5分钟实现游戏汉化零障碍
  • leetcode 846. Hand of Straights 一手顺子-耗时97%
  • WPF Prism.Wpf, Prsim.DryIOC integrate sub module/project into main module via IRegionManager
  • DownKyi专业指南:解锁B站视频下载全攻略
  • XUnity自动翻译器:5步轻松实现游戏汉化的终极指南
  • LeagueAkari英雄联盟智能助手使用完全指南
  • 英雄联盟终极免费自动化助手:LeagueAkari完整使用指南
  • 成为三剑客很难,手持两股剑倒有可能
  • DownKyi智能视频下载工具实战指南:3种高效方法深度解析
  • 英雄联盟智能助手:5个实用功能让你游戏体验大升级
  • 2026年北京朝阳海淀装修公司权威推荐TOP5:别墅定制与老房改造优选指南(首推品牌:北京亿丰方圆装饰) - 品牌智鉴榜
  • XUnity自动翻译器:3步解锁外语游戏中文版,告别语言障碍困扰
  • NVIDIA Profile Inspector显卡优化全攻略:深度性能调优指南
  • 浅学 AES 算法
  • LeagueAkari:英雄联盟智能助手终极使用指南