(01)接口:被interface修饰叫做接口。
接口:用接口表示现实生活中的【标准】或【规范】。(目的在于统一标准)
(02)成员变量:默认被**public static final**修饰。
注意:接口中的成员变量被static修饰,说明是静态的,属于类,就是说只有一份(可以参照CSDN中的Java的static关键字理解),被final修饰说明是常量,不可更改。
(03)成员方法:默认被**public abstract**修饰。
注意:接口中的所有方法默认被abstract修饰,即所有的方法都是抽象方法,说明没有方法体。
public interface Person { public static final int a = 100;//实际项目中public static final可以省去 public abstract void m(double d);//实际项目中public abstract可以省去 }
(04)接口中**没有构造方法、不能创建对象**。
思考:接口不能创建对象、那么接口有什么用?答:纯设计。
(05)类(具体类和抽象类)使用**implements**实现关键字来实现接口。
理解:先用接口设计、然后类实现接口。
//驾驶汽车的接口,里面有一个驾驶汽车的方法, public interface Car { void driver();//省去了public abstract } //具体类实现接口,并覆写方法 public class Benz implements Car{ @Override public void driver() { System.out.println("驾驶奥迪"); } }
(06)创建对象的语法格式
类名 变量 = new 当前类的构造方法
父类 变量 = new 子类的构造方法
接口 变量 = new 实现类的构造方法
public static void main(String[] args) { Car car = new Benz(); car.driver(); }
(07)具体类、抽象类、接口的实现
(08)方法分类总结
第一种:没有返回值的方法、有返回值的方法
第二种:静态方法(属于类)、非静态方法(属于对象)
第三种:实现方法、抽象方法(没实现的方法)
(09)final关键字
①final修饰变量:表示常量、不能更改。
②final修饰方法:子类的方法不能覆盖父类的方法。
如下:父类方法加了final关键字修饰,子类写了相同的方法就会报错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8rN7QQIo-1640600971012)(C:Users18707AppDataRoamingTyporatypora-user-imagesimage-20211227174148936.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WFXeQIau-1640600971013)(C:Users18707AppDataRoamingTyporatypora-user-imagesimage-20211227174234639.png)]
③final修饰类:不能被继承。
(10)this关键字
this:表示当前类的对象、表示new创建出来的对象。
示例:在student类中有参的构造方法
//在student类中有参的构造方法 public Student(String name, Integer age, String school) { this.name = name; this.age = age; this.school = school; } //在测试类中通过有参的构造方法创建了一个对象student //此时,构造方法中的this就代表student //this.name = name就相当于 student.name = 刘亦菲 //如果不加this,变成 name = name,程序无法区分谁是成员变量,谁是局部变量 public static void main(String[] args) { Student student = new Student("刘亦菲",20,"清华"); }
作用一:区别成员变量和局部变量。
作用二:用于构造方法之间的调用。
public Student() { this("刘萌萌",20,"清华");//在无参构造方法里调用有参的构造方法 } public Student(String name, Integer age, String school) { this.name = name; this.age = age; this.school = school; }
(11)super关键字
super:表示父类的引用。
作用:用于调用父类的构造方法。
注意:如果类中不写构造方法、java会默认提供一个public无参的构造方法。(意思是一个构造方法都不写,系统会提供一个,如果写了就不在提供)
注意:子类的构造方法的首句会默认调用super()父类无参构造方法。
注意:Java中所有类都是从**Object**顶级父类继承下来的。
注意:如果类没有父类、java会默认让它继承Object类。
(12)类(具体类和抽象类)和接口之间的关系
类与类之间是继承关系
接口与接口之间是继承关系
类与接口之间是实现关系
注意:类只能继承一个父类、接口可以继承多个父接口。
(13)具体类、抽象类、接口同时使用的代码模板
class A extends B implements C, D, E, F
第一步:接口 设计
第二步:抽象类 部分实现
第三步:具体类 全部实现
(14)包的使用
定义包:package 包名(com)
导入包:import 包名.类名(com.Person)
导包的场景:如果需要的类在外包则必须导入才能使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)