/**
* 抽象类
* 接口类
* 封装
*/
1.抽象类(abstract 修饰的普通类 + 抽象方法)
1.1 抽象方法:只有方法定义,没有方法体
public abstract class Animal {
public abstract void run();
}
1.2 继承于抽象类必须要重写该抽象类里面的抽象方法
public class Dog extends Animal{
@Override
public void run() {
System.out.println("奔跑");
}
}
1.3 抽象类不能实例化
public class Test {
public static void main(String[] args) {
//调用抽象类 Animal 里面的 eat() 方法
//Animal a = new Animal(); //报错
//以上说明抽象类不能实例化
}
}
总结: 抽象类可以有非抽象方法,有抽象方法的类一定是抽象类或接口
抽象方法(abstract)只有方法声明,没有方法体
抽象类不允许直接实例化
子类用 extends 继承抽象类 -> public class 类名 extends 抽象类
2.接口(interface)
2.1 接口中只有抽象方法
public interface USB {
//没有构造方法
//属性只能由 public static final 修饰(不写,默认加上)
String NAME = "传输";
//方法不加 abstract,默认加上
public void name();
}
2.2 实现接口,必须要重写接口中的抽象方法
public class MacBook implements USB{
@Override
public void name() {
System.out.println("我是 MacBook 的 usb 接口");
}
}
2.3 接口也不允许被实例化
总结: 接口中只有抽象方法(构造方法也没有)
接口中定义属性只能由 public static final 修饰(可以省略,默认存在)
接口中定义方法也可省略 abstract (默认存在)
接口不允许实例化
子类用 implements 实现接口 -> public class 类名 implements 接口
注意: java 中只能单继承(extends 后面只能有一个类),但可以多实现(implements 后面可以有多个接口,用逗号隔开)
类可以在继承类的同时实现一个或多个接口(先继承后实现)
3.抽象类与接口的区别
相同点: 定义标准,让子类实现这些标准
不同点: 抽象类中可以有非抽象方法,接口中只能有抽象方法
抽象类与子类是继承关系 -> public class 类名 extends 抽象类
接口与子类是实现关系 -> public class 类名 implements 接口
一个类只能继承一个抽象类,一个类可以实现多个接口(用逗号隔开)
抽象类可以继承类或实现接口,接口只能继承接口(没有实现功能)
接口中的属性全部是 public static final 类型的
抽象类有构造方法,接口中没有构造方法
4.封装
4.1 如果我想装 100 分,怎么装? 定义一个整数变量 -> int score = 100;
4.2 如果我想装 10 个 100 分,怎么装?定义一个整数数组 -> int[] scores = new int[10];
4.3 如果我想装一个学生的名字、年龄、分数,怎么装? 定义一个类 -> Student
4.4 如果我想装多个学生,怎么装?定义一个集合 -> ArrayList
//第一个学生
Student s = new Student("张三", 100, 20);
//第二个学生
Student s2 = new Student("李四", 90, 21);
//......
//把上面的数据(对象)用集合装起来
//创建集合
ArrayList students = new ArrayList();
students.add(s); //往集合中存入对象
students.add(s2);
//以上完成了装箱
//下面是拆箱
Student s3 = (Student)students.get(0); //通过下标获得对象
Student s4 = (Student)students.get(1);
System.out.println(s3);
System.out.println(s4);
Java笔记(抽象类、接口类、封装)
最新推荐文章于 2025-05-01 20:06:47 发布