1.Java类
类可以继承类和接口,但是class()单继承,()多重继承;
注意:只能实例化类(抽象类不能实例化,接口是特殊的抽象类),所以接口没有构造函数
class A {
public A(){ //构造方法(无参)
}
public void name() {//成员方法
System.out.println("A");
}
static void names() {//静态方法
System.out.print("A");
}
}
interface B {
default void name() {//成员方法
System.out.print("B");
}
static void names() {//静态方法
System.out.print("B");
}
}
interface C {
default void name() {//成员方法
System.out.print("C");
}
static void names() {//静态方法
System.out.print("C");
}
}
class D extends A { //继承类
}
class D implements B, C { //继承接口
}
public class test7 {
public static void main(String[] args) {
A a1=new A();
A a=new D(); //向上转换
((D)a).name();//安全的向下转换
((D)a1).name();//不安全的向下转换(运行报错)
}
}
2.Java接口
**接口只能继承接口、()多重继承,但不能实例化
关键字 void 方法名称(如类的成员方法)
**
interface B {
default void name() {//成员方法
System.out.print("B");
}
static void names() {//静态方法
System.out.print("B");
}
}
interface C {
default void name() {//成员方法
System.out.print("C");
}
static void names() {//静态方法
System.out.print("C");
}
}
interface E extends B,C{
default void name() {
// 继承了B的name方法,如果不明确 B类和C类会起冲突
B.super.name();
}
}
class F implements E{//为了可以实例化
public void name(){
E.super.name();
}
}
public class test7 {
public static void main(String[] args) {
F f=new F();
f.name();
}
}
3.Java抽象类
**抽象方法必须在抽象类中,但抽象类不一定有抽象方法。
关键字类名=抽象类
关键字() void(数据类型)方法名=抽象方法。 (注:只能继承,子类必须继承并重写)
。
可以继承类和接口,但是class()单继承,()多重继承。
**
abstract class H extends A{ //继承类
}
abstract class H implements B,C { //继承接口
}
abstract class I{
public I(){ //构造方法
}
public abstract void name(); //抽象方法的为一格式
}
class G extends I{
public void name(){
System.out.print("抽象方法的子类");
}
}
public class test7 {
public static void main(String[] args) {
G g=new G();
g.name();
}
}
4. Java继承:重写和重载
重写:参数类型、参数位置、参数个数不变,只改变方法内容
重载:参数类型、参数位置、参数个数、方法内容均可更改
public void (int a ,double b){
}
//1
public void (double a ,double b){
}
//2
public void (double b, int a){
}
//3
public void (int a, double b, int c){
}