Java入门姿势【面向对象7】三大特性之一继承性
2021/8/28 17:36:13
本文主要是介绍Java入门姿势【面向对象7】三大特性之一继承性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
上次我为大家写出啦“封装性”,封装性是面向对象三大特性之一是Java学习必备的知识,如没有了解透彻的话请打开下方文章在进行观看一下哦!!今天我们来说一下面向对象三大特性之“继承性”。
【Java入门姿势【面向对象6】三大特性之一封装性】
学习教程推荐:
- 1.北京高淇Java300集(Java强烈推荐)
Java300集零基础适合初学者视频教程_Java300集零基础教程_Java初学入门视频基础巩固教程_Java语言入门到精通 - 2.JavaSE基础全套-从零开始进阶之大神(推荐)
系统教学JavaSE基础全套课程-从0开始进阶至大神_线下录制Java系列课程Java从入门到精通_/JAVA基础/数组/OOP/集合/IO流_ - 3.Java常用类基础实战
【基础夯实】Java常用类实战基础教程_Java八大常用类核心基础_Java常用类基础入门/Java包装类/String类 - 4.Java基础入门必备数学知识【数据结构与算法】(推荐)
Java基础入门必学知识数据结构与算法_Java数据结构与算法基础到进阶/Java基础入门进阶/Java数据结构分析/Java数据结构常见问题_哔哩哔哩_bilibili - 5.Java面向对象编程_OOP基础深入讲解
Java面向对象编程重基础深入讲解_OOP面向对象Java基础干货分享/JavaSE/面向对象编程/OOP程序设计 - 6.GOF23种设计模式-23中设计模式详解课程
GOF23种设计模式讲解_Java gof23种设计模式详解课程_从单例到备忘录模式 23种模式详解
继承性
继承(Inheritance)是面向对象编程的三大特征之一,它让我们更加容易实现对于已有类的扩展、更加容易实现对于现实世界的建模。嘿~嘿~我们今天该来啃~啃它~
1、继承及其作用
继承让我们更加容易实现类的扩展。 比如,我们定义了人类,再定义Boy类就只需要扩展人类即可。实现了代码的重用,不用再重新发明轮子(don’t reinvent wheels)。
从英文字面意思理解,extends的意思是“扩展”。子类是父类的扩展。现实世界中的继承无处不在。比如:
上图中,哺乳动物继承了动物。意味着,动物的特性,哺乳动物都有;
在我们编程中,如果新定义一个Student类,发现已经有Person类包含了我们需要的属性和方法,那么Student类只需要继承Person类即可拥有Person类的属性和方法。
用代码实现继承如下:
public class Animal {//extends Object private String color;//颜色 private int age;//年龄 public Animal() { super(); } public Animal(String color, int age) { //alt+insert this.color = color; this.age = age; } public void eat(){ System.out.println("eating .........."); } public void sleep(){ System.out.println("sleeping............"); } public void introduce(){ System.out.println(color+" "+age); } } public class Dog extends Animal{ private String nickName;//昵称 public Dog() { } public Dog(String color,int age){ } public Dog(String color,int age,String nickName){ // this.color = color; // this.age = age; super(color,age); this.nickName = nickName; } public void guard(){ System.out.println("Dog guarding......"); } } public class Cat extends Animal { private int eysSight;//视力 public Cat() { super();//默认调用父类的无参数构造方法 } public Cat(String color, int age, int eysSight) { super(color,age); this.eysSight = eysSight; } public void grabMouse(){ System.out.println("Cat grab mouse.........."); } } public class Test { public static void main(String[] args) { Dog dog = new Dog("黑色",3,"旺财"); dog.eat();//从父类继承的方法 dog.sleep();//从父类继承的方法 dog.introduce();//从父类继承的方法 dog.guard();//子类特有的方法 Cat cat = new Cat("花色",3,5);//alt+enter cat.eat(); cat.sleep(); cat.introduce(); cat.grabMouse(); } }
“继承”使用要点:
1. 父类也称作超类、基类。子类:派生类等。
2. Java中只有单继承,没有像C++那样的多继承。多继承会引起混乱,使得继承链过于复杂,系统难于维护。
3. 子类继承父类,可以得到父类的全部属性和方法 (除了父类的构造方法),但不见得可以直接访问(比如,父类私有的属性和方法)。
4. 如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object。
2、方法重写
父类的方法introduce()已经无法满足子类的需求,怎么办?同理,Object类的toString()已经无法满足Animal类、Dog类的需求,怎么办??? 其实可通过方法重写(override)解决,或者称为方法覆盖
我们来用代码实现一下:
public class Animal {//extends Object protected String color;//颜色 private int age;//年龄 public Animal() { super(); } public Animal(String color, int age) { this.color = color; this.age = age; } public void introduce(){ System.out.println(color+" "+age); } @Override public String toString() { //return super.toString(); return "Animal[color="+color+",age="+age+"]"; } } public class Dog extends Animal{ private String nickName;//昵称 public Dog() { } public Dog(String color, int age){ } public Dog(String color, int age, String nickName){ // this.color = color; // this.age = age; super(color,age); this.nickName = nickName; } public void introduce(){ //this.introduce(); //super.introduce(); System.out.println(color+" "+this.getAge()+" "+nickName); } public void guard(){ //this.guard(); //super.guard(); System.out.println("Dog guarding......"); } @Override public String toString() { //return super.toString()+" "+nickName; return "Dog[name="+color+",age="+getAge()+ ",nickName="+this.nickName+"]"; } }
如果没有看懂的小伙伴:我再来总分总展示一下,去更清晰的了解
总:方法重载和方法重写(覆盖)是面向对象中两个重要概念,其实这两个概念之间没有什么关系,但是毕竟都是关于方法的,毕竟容易引起混淆。对此我也做了一些归纳,感觉能够把这两个概念很好的区分开。我打算从总体区别、细节区别两个方面来说明。
分:总体的区别:最主要的区别,是解决的问题不同,即作用不同。
重载:overload
同一个类中,在一个类里面为一种行为提供多种实现方式并提高可读性
重写:override
子类和父类间,父类方法无法满足子类的要求,子类通过方法重写满足要求
细节的区别:一个方法的声明自左向右包括权限修饰符、方法返回值、方法名、参数列表、抛出的异常类型等。下面从这几方面说明区别:
总:重载实例:构造方法重载、println()方法重载
重写实例:Object类的toString()、equals()、hashCode()等都可以被子类重写
不知道这样下来能够让你们看懂不
嘿~嘿~~感兴趣的同学快去试一下去~~
以上就是本章节所讲述的全部内容啦,稍后我在更新后续哦,喜欢的伙伴支持一下哦~
感谢观看~
这篇关于Java入门姿势【面向对象7】三大特性之一继承性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南