类,接口,抽象类总结
类的继承
类继承的格式:
Public class 类名 extends 父类名{
}
注意:java中类的继承是单继承,即extends后只有一个父类。
例:public class UNSstudent extends Student{}
子类继承父类中的方法时有两种情况:
如果子类和父类在同一个包下,那么父类中的公有属性,受保护属性以及普通方法可以被子类继承,而私有属性、方法及构造方法不能子类继承。
如果子类和父类不在同一个包下,那么父类中的公有属性及普通方法可以被子类继承到,而私有属性及方法和受保护的属性及方法、构造方法不能被子类继承到。
方法的重写
如要实现方法的重写必须满足的条件:
1) 两个类必须存在继承关系;
2) 子类重写方法的访问修饰符必须大于或等于父类方法的访问修饰符private<protected<public。
3) 方法的返回值数据类型,方法名,参数类型、个数及顺序都必须形同。
注意:如果子类中没有重写方法,那么调用时会优先执行父类中的方法,如子类中重写了方法,那么调用时就会先执行子类中的方法。
自动转型
条件:必须存在继承关系。
格式
1父类名 对象名=new 子类构造方法();
Student un = new UNSstudent();
2 定义方法
Public 返回值数据类型 方法名(父类名 对象名){
代码
}
实例化对象
父类名 对象名=new 子类构造方法();
子类名 对象名=new 子类构造方法();
调用:方法名(对象名)
多态:多态是由java的方法重载,继承,方法重写,自动转型等技术的表现形式。
多态是对象之间的不同表现形态。
面向对象的三大特征:
1. 继承
2. 多态
3. 封装
接口
定义接口:
public interface 接口名 extends 接口名,…{}
接口中可以定义常量:
public static final 数据类型 常量名= 值;
例如 public static final String NAME=”li”;(常量名必大写)
定义抽象方法:
public 返回值数据类型 方法名(数据类型 参数名,…);
注意:这里没有大括号,而是用分号。
注意:
1接口中默认的访问修饰符是public,
2 接口中可以定义抽象方法
3接口可以继承多个接口,用逗号分隔开即可,
4接口不能实例化对象。
实现接口的格式:
Public class 类名 implements 接口名,…{
//要实现接口中可全部抽象方法
}
接口可以实现类或抽象类然后在实现多个接口
格式:
public class 类名 extends 类名或抽象类 implements 接口名,…{
//实现抽象类中和接口中的所有抽象方法
}
接口和类的区别:
1. 定义的关键字不同,前者为implements,后者为class;
2. 接口中默认的访问修饰符是public,类中默认的是protected;
3. 接口中只能定义常量和抽象方法,而类中可以定义常量,属性,方法;
4. 接口可以多继承,而类是单继承;
5. 接口中不可以实例化对象,类中可以实例化对象。
public interface Drawing{
//定义常量
public static final String NAME=”圆”;
//定义抽象方法
public void draw();
}
抽象类
定义抽象类
public abstract class抽象类名{
}
抽象类中可以定义类中有的任何属性方法,但不能实例化对象。
可以定义常量(常量名的各个字母都要大写),
还可以定义抽象方法,格式:
public abstract 返回值数据类型 方法名(数据类型 参数名,……);
抽象类也可以继承,其格式为:
public abstract class抽象类 extends 抽象类或类{
//抽象类中的抽象方法可以实现也可以不用实现
}
1.抽象类是继承类和接口所有特性的类。
2.抽象类和接口都是比较特殊的类。
3.抽象类和接口都不能实例化对象。
public abstract class Absdraw{
//定义常量
public static final String NAME=”圆”;
//属性
private String type;
//构造方法
public Absdraw (String type){
this.type = type;
}
//普通方法
public void setType(String type){
this.type = type;
}
public String getType(){
return type;
}
//定义抽象方法
public abstract void draw();
}