面向对象中的包和继承(Java)

mac2026-08-12  5

包 就是文件夹、是组织类的一种方式。 因为我们的项目需要创建很多的类,而为了代码有更高可读性,一个.java文件一般只存放一到两个类。所以为了更好的整理类,就有了包。在我们的计算机磁盘中也就是文件夹。

包的代码如何在命令框中运行: 注意:编译时是斜杠 \ 运行时是点 .

在idea中怎样创建包

包的导入:用import关键字在.java文件的首行(可在代码中直接输入需要的类并按Tab键)

import 导入包中的普通的类import static 导入包中静态的类 包的访问权限 :defult idea默认也是defult

继承

定义(理解):为了体现代码的重用的效果,是代码写起来更方便更简单,将不同类中 相同的代码 放到一个新的类中,并让啊这些类通过 extends 关键字来继承这个新的类。 例如: 类Cat、Bird、Dog 使用 (extends) 来继承 类Animal 同时 类Cat、Bird、Dog 被叫做 子类 / 派生类 类Animal 被叫做 父类 / 基类 / 超类 //Animal .java文件 public class Animal { private String name;//姓名属性 public Animal(String name) {//构造函数 this.name = name; } public void eat(String food) { // 普通方法 System.out.println(name + "正在吃" + food); } public String getName() { //name属性的get方法 return name; } } //Cat .java文件 public class Cat extends Animal { //extends继承时,继承了除过构造方法其它所有的属性和方法 //所以 子类的构造方法只能通过关键字super来访问父类的构造方法,帮助父类构造 //而且 调用父类构造方法 必须放在子类构造方法的第一行 public Cat(String name) { super(name); } } //Bird.java文件 public class Bird extends Animal { public Bird(String name) { super(name); } public void fly() { // Bird这个类自己的方法 System.out.println(name + "正在飞 "); } } 语法规则: 基本语法 class 子类 extends 父类 { } 使用 extends 指定父类.Java 中一个子类只能继承一个父类 (而C++/Python等语言支持多继承).子类会继承所有public的字段和方法;private也继承了,只是不能访问;子类的实例中, 也包含着父类的实例. 可以使用 super 关键字得到父类实例的引用. 关键字:super this 关键字:是指当前对象 super 关键字 : 是指当前对象的父类 super关键字的使用: protected关键字 如果把字段设为 private, 子类不能访问. 但是设成 public, 又违背了我们 “封装” 的初衷. 两全其美的办法就是 protected 关键字 被protected 修饰的属性和方法 在同一个包中的类或者不同包种的子类,都可以被访问

Java中的 4种权限控制 : private:只能在同一个类种中访问 default : 包的访问权限,idea默认就是default (不被权限关键字修饰) ,只能同一个包中访问 protected :在同一个包中时,都可以访问;不同包中时,要在继承的前提下才能访问,也就是在不同包中的子类中可以访问 public : 所有都可以访问,权限最大。

4. 继承关系代码的执行顺序: 有static{} 代码块,就先执行父类静态代码块,再执行子类静态代码块;再执行父类构造函数,子类构造函数 Animal为父类,Cat为子类 5. 继承关系 —》多层继承

语法上允许类的层数无限曾继承下去,但实际工程中一般不会这么做,一般推荐3- 4 层 (UML图)

final 关键字:在多层继承时,阻止类的继承

修饰一个变量,表示这是一个常量修饰一个类,叫密封类,不能被继承。(idea中的 String类 就被final修饰)
最新回复(0)