做公司网站要营业执照吗,网站建设的财务分险,阿里云网站建设——部署与发布,网站建设与管理就业岗位抽象类及抽象方法
概念#xff1a;一个类中没有包含足够的信息来描绘一个具体的对象#xff0c;这种类被定义为抽象类#xff0c;含有抽象方法的类也被称为抽象类。
用通俗的话来说就是当一个类的某个功能#xff08;方法#xff09;实现不确定时#xff0c;我们就将该…抽象类及抽象方法
概念一个类中没有包含足够的信息来描绘一个具体的对象这种类被定义为抽象类含有抽象方法的类也被称为抽象类。
用通俗的话来说就是当一个类的某个功能方法实现不确定时我们就将该功能方法用abstract修饰让其变为抽象方法这个方法所在的类就称为抽象类我们让某个类来继承这个抽象类称为该抽象类的子类让这个子类来具体实现这个方法。当然这个子类可以不实现这个抽象方法但是这个子类也要成为一个抽象类。
抽象方法的声明
语法格式[访问权限修饰符] abstract 返回值类型 方法名(参数列表) [throws 异常列表];
public abstract void eat();注意
抽象方法不能被privatefinalstatic修饰。抽象方法不能有方法体。
抽象类的声明
语法格式[权限修饰符] abstract class 类名{ }
public abstract class Test{}注意
抽象类中可以包含五种成分,成员变量,方法,初始化块,构造器,内部类。抽象类中不一定要有抽象方法。
抽象类的局限性
抽象类有时候会出现代码冗余的问题类的继承是单根继承一个类只能直接继承一个类。
代码实现
abstract class Animal {String name;int age;public abstract void eat();
}class Cat extends Animal {Overridepublic void eat() {System.out.println(小猫吃鱼);}
}class Dog extends Animal {Overridepublic void eat() {System.out.println(小狗啃骨头);}
}
public class Test01 {public static void main(String[] args) {Cat cat new Cat();cat.eat();//输出小猫吃鱼Dog dog new Dog();dog.eat();//输出小狗啃骨头}
}注意抽象类不能创建对象
public abstract class Person {public abstract void eat();
}测试类
public class Test02 {public static void main(String[] args) {Person person new Person() {Overridepublic void eat() {System.out.println(印度人喜欢吃咖喱);}};person.eat();//输出印度人喜欢吃咖喱}
}代码分析
底层创建匿名类继承Person类重写eat()创建匿名类的对象将匿名类对象的内存地址赋值给父类的引用
内存分析 总结
抽象类中只能有抽象方法 抽象类中可以有构造方法、静态方法、成员方法、抽象方法抽象类中不可以没有抽象方法 可以但是毫无意义如果父类是抽象类则子类必须实现父类的抽象方法 不一定子类如果是抽象类可以不实现父类的抽象方法抽象类不能有构造方法 可以有可以使用new关键字来创建抽象类对象 不能创建的是匿名内部类的对象