java32

抽象类:
-1使用抽象类后的要求:
子类必须要覆盖父类
-2使用抽象类后解决的问题:
父类不需要再写方法体了(也就是花括号及里面的内容)。(避免了相同需求[都是求图形面积],而不同算法[计算图形面积方法不同]的问题)
-3注意:

  • 抽象方法必须定义在抽象类中(类和方法前都加abstract)或者接口中
  • abstract不能和private(子类无法继承),final(不允许被继承),static(有static修饰的
    是属于类的,而方法属于对象)一起使用
  • 若是抽象类就不能用此构造器来创建对象。
  • 子类必须覆盖父类
  • 若子类不想覆盖父类,则需要子类加上abstract,之后就由孙类来继承父类中的抽象方法。
  • 抽象类中是可以有非抽象方法的(供子类或者孙类创建对象后调用)
  • 构造方法不能定义为私有化(因为子类继承时必须先要调用父类的构造方法,如果构造方法私有化,将无法继承,并且抽象方法只有被子类继承后才可以实现内部的方法体)
    1.抽象类必须有子类才有意义
    2.子类中会默认有构造器来调用父类的构造器
    3.接口:表示一种规范.用来约束使用者该怎么做
    interface 接口名(命名规则:在名称前加上I后加上able){
    }
    -2接口也生成对应的字节码
    -3接口其实是一个特殊的抽象类

4.接口注意点
-1接口没有构造器(也没有默认构造器),不能创建对象
-2接口中定义的变量,都是全局的静态常量(相当于加了final)

interface Iusbable{
	String name = "ss";
//相当于public static final String name;又因为当final修饰一个字段时,字段相当于常量,所以必须加上初始值
	void a();
}

-3接口中定义的方法都是公共的抽象方法public abstract void a();
-4接口里可以定义内部类,内部类也是公共抽象的
-5接口是可以被继承的,并且可以多继承(可以同时继承多个类,且继承的父类也必须是接口类),但是普通的类不可以多继承的
-6接口中一般不会有方法的覆盖(没有意义)
5.接口:
开始只是规范说明
现在是接口的实现类
implement:实现
实现关系也称继承关系(可以写成多态的形式),但不等同
接口的实现:
-1先自己定义一个类,这个类既可以继承普通的类(一个),也可以实现(implements)其他的接口(多个)
-2这个类必须去覆盖接口中的方法(覆盖的时候,子类覆盖权限必须大于等于父类的范围)
-3到具体的对象
面向接口编程:创建对象的时候可以赋值给接口

eg:
interface Iwalkable{   //接口
	void walk();	//public abstract void walk
}
class Animal{  //普通的类
	String name;
}
class Cat extends Animal implements Iwalkable{
	public void walk() {  //覆盖接口中的方法,权限为public
		System.out.println("走猫步");
	}
}
public class t {
	
public static void main(String[] args) {
	Iwalkable a = new Cat();//面向接口编程
	a.walk();
}
}

6.抽象类和接口

  • 相同点:
    都是被普通的类实现或者继承
    里面都有抽象方法,并且子类(两者子类所指不同)中必须覆盖其父类的抽象方法
    都不能实例化(即不能new())
  • 不同点:
    抽象类中有构造器(但一般不会去创建构造器,因为没有意义,抽象类本身就是抽象的,没有具体的东西),而接口中没有构造器
    抽象类中可以包含普通方法和抽象方法,而接口中只能有抽象方法
    接口中默认成员变量:public static final 变量--》相当于静态常量,抽象类中是默认权限(同一个包中能访问,不同包中是不能访问的)
    接口中的方法:public abstract void a(){};,抽象类中是默认权限:void a(){};
原文地址:https://www.cnblogs.com/-zero/p/10387537.html