目录
前言
一、什么是继承?
二、继承的实现
三、抽象类及方法
四、抽象方法的具体实现
总结
前言
java是面向对象的,为了更方便的实现类与类之间的共性,从而产生了继承,把这些共性可以放在一个类中就可产生一个父类,可供有这些共性的子类来使用。而继承中父类中总会有哪些不需要具体实现的方法,而这些方法不用具体实现的话呢,我们就可以来使用抽象类来充当这个类,从而使得继承更加方便使用!!
一、什么是继承?
继承就是抽取类与类之间的共性,通过关键字extends进行处理的,方便了代码的重复使用。继承是会产生子类与父类的,而java中所有类的父类都可以是Object,而其他类都是Object的派生类!
二、继承的实现首先我需要先把继承里面的一些关键字来进行介绍,继承最重要的就是extends了,继承就是通过这个关键字来进行处理的,形如(class B extends A)其中A就是B 的父类而B就是子类了。其次父类当中是可以有构造方法的,如果没有的话系统也会默认有无参数的构造方法的,在子类中需要调用父类的构造方法是就需要使用到super这个关键字了,super只能出现在构造方法当中,且只能出现在第一行这是比较特殊的。最后如果一个类不想被继承的话你可以使用final来进行修饰,这样这个类就不会被继承了,下面是具体的代码:
final class A{//一个类不想被继承可设置为final修饰 final 修饰属性 就是常量了 } class Animal{ public String name;//当子类变量未赋值的时候 如果同名的 优先访问自己的 除非super来引用 public int age;//子类里面只能访问公共类型的 private int count;//子类不能访问 私有类型的 protected String sex;//protected保证其他类继承时可以使用 用public 在哪都可以使用 public void eat(){ System.out.println(name + "正在吃"); } Animal(String name,int age){//构造方法 this.name = name; } } class Dog extends Animal{//继承(Dog Brid 都是子类 或者派生类 Animal 是父类 基类或超类) public Dog(String name,int age){ super(name,age);//显示调用构造方法 } @Override public void eat(){ System.out.println(name + "正在大口吃"); } } class Brid extends Animal{//java当中是单继承 不能多继承 子类构造同时要帮助父类来进行构造 //super();调用父类的构造方法 super不能出现在静态方法中 super:子类调用父类的 //super.fun()调用父类的普通方法 //super.data调用父类的成员属性 public String wing; public Brid(String name,int age,String wing){ super(name,age);//显示调用构造方法 super只能在当前构造方法中 且只能在第一行 this.wing = wing; } public void fly(){ System.out.println(name + "正在飞"); } } public class Test { public static void func(Animal animal) { } public static void main(String[] args) { Dog dog = new Dog("huahua", 2); System.out.println(dog.name); dog.eat(); System.out.println(dog.sex); } } }三、抽象类及方法
在父类中如果出现一些不用具体实现的方法时,我们可以把这个方法设为抽象的从而它就可以不用具体实现而被子类使用了,这个类也用设置为抽象类的了,都通过关键字abstract来进行处理。抽象类就是专门用来继承的!
下面是一些抽象方法需要注意的地方:
1、包含抽象方法的类叫做抽象类
2、一个没有具体实现的方法 被abstract修饰
3、抽象类是不可以被实例化的(new)
4、因为不能被实例化 所有只能被继承
5、抽象类当中也可以包含和普通类一样的成员和方法
6、普通类要继承抽象类 必须重写抽象类中的所有的抽象方法
7、抽象类最大的作用就是被继承
8、抽象类A继承了抽象类B 那么抽象类 A可以不用重写 抽象类B的抽象方法
9、类C继承了抽象类A 而A抽象了抽象类B 那么类C必须重写抽象类A和抽象类B中的所有方法
四、抽象方法的具体实现abstract class Shape { // 抽象类抽象方法都不能被final修饰 public abstract void draw() ;//抽象方法 不能是private的 } class Rect extends Shape{ @Override public void draw() {//一定要重写 否则会报错(继承抽象类) System.out.println("♦"); } } abstract class A extends Shape{ public abstract void func(); } public class Test { public static void drawMap(Shape shape){ shape.draw(); } public static void main(String[] args) { Shape shape = new Rect();//可以new成子类对象 //Shape shape = new Shape() ;不能实例化 drawMap(shape); } }总结
以上就是关于继承和抽象的描述以及实现了,其中也有写的不好的地方,也希望可以理解一下!!这其中有关于重写和多态的相关知识,后续我也会详细介绍的!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)