Java继承、封装、多态理解

简介: Java中的继承、封装和多态知识点是学习java必备的基础知识,看似简单,真正理解起来还是有一定难度的,今天小编再次通过实例代码给大家讲解java 封装继承多态知识,感兴趣的朋友一起学习下吧。

前言


Java中的继承、封装和多态知识点是学习java必备的基础知识,看似简单,真正理解起来还是有一定难度的,今天小编再次通过实例代码给大家讲解java 封装继承多态知识,感兴趣的朋友一起学习下吧。


继承


什么是继承,谈谈自己对继承的理解,继承是类与类之间的一直关系,类似于数学集合之中包含与被包含之间的关系,比如大学生属于学生,那么可以看成是大学生类 继承了学生类,那么大学生类就是学生类的子类(派生类),学生类是大学生类的父类(基类),同时要值得注意的是Java中的继承是单继承(多层次继承),多实现(接口),(理解成一个类不可能有两个爹,但是儿子可以继承父亲,父亲可以继承爷爷这种多层次)

public  class Person{
    public void eat(){
        system.out.print("吃")
    }
    public void drink(){
        system.out.print("喝")
    }
    //吃喝拉撒睡,省略掉中间的
    public void sleep(){
        system.out.print("睡")
    }
}
public class XiaoGuo extend Person{
    protected void  yellow(){
        system.out.printh("找小姐姐")
    }
    public void gamble(){
        system.out.print("小赌一把")
    }
    public void drink(){
        system.out.print("酗酒")
    }
}
复制代码


封装


什么是封装,谈谈自己对封装的理解,封装就是将类的信息(比如说类的属性)隐藏在类的内部,不允许外部程序直接访问。此时就要提到一个关键字private,他是一个权限修饰符,可以用来修饰成员(变量和方法),保护成员不被其他别的类来使用,如果需要被其他类来使用,那么需要提供对应的操作:a.提供get变量名()方法,用于获取成员变量的值 b.提供set变量名(参数),用于设置成员变量的值,同样也和get方法一样,都是用public来修饰(同时切记变量名的首字母一定大写)。

public  class Man{
    //对象属性的封装,一个人的姓名,年龄,妻子
    private String name;
    private  int age;
    private  Woman  wife;
    //男人对外界提供方法的封装,设置年龄,姓名,妻子,对外暴露自己的年龄,姓名,但没有暴露妻子
    public void setWife( Woman wife){
        this.wife=wife;
    }
    public void setAge(Int age){
        this.age =age;
    }
    public void setName( String name){
        this.name=name;
    }
    public String getName(){
        return name;
    }
    public Int getAge(){
        return age;
    }
}
public class Woman{
    //对象属性的封装
    private String name;
    private  int age;
    private  Man  husband;
    //方法的封装, 女人 只对外暴露自己的姓名,年龄和丈夫都不暴露
    public void setHusband( Man husband){
        this.husband=husband;
    }
    public void setAge(Int age){
        this.age =age;
    }
    public void setName( String name){
        this.name=name;
    }
    public String getName(){
        return name;
    }
}
复制代码


多态


什么是多态,封装和继承几乎都是为多态而准备的,多态我个人理解成是java程序在运行中使用继承时的一种关系,比如方法重写,继承是多态的实现基础。

举例:我们可以说大学生是大学生:大学生  unst=new 大学生();

我们也可以说大学生是学生:学生 st=new 大学生();

这里大学生在不同的时刻表现出不同的形态,我认为这就是多态。

多态实现的前提和体现有以下几点:1.有继承关系 2.有方法重写 3.有父类引向子类对象

package com.aiit.java_extends;
public class Animal {
    public int eyesNum;  //动物的眼睛
    public Animal() //无参构造方法
    {
     System.out.println("我是没人疼(无参)的动物,嘤嘤嘤~");
    }
    public Animal(int eyesNum)  //有参构造方法
    {
     this.eyesNum=eyesNum;
     System.out.println("我是有人疼的(有参)小动物哦"+"我有"+eyesNum+"只眼睛,我最漂亮了~");
    }
    public void breath()  //动物的方法
    {
     System.out.println("动物会呼吸");
    }
}
复制代码
package com.aiit.java_extends;
public class Tiger extends Animal {
   private int tigerLegsNum; //私有化老虎的属性
   Tiger() //无参构造方法
   {
     System.out.println("我一只没人疼(无参)的老虎,嘤嘤嘤~");
   }
   Tiger(int tigerLegsNum) //有参构造方法
   {
     super(2);
     this.tigerLegsNum = tigerLegsNum;
     System.out.println("我是有人疼的(有参)老虎哦"+"我有"+eyesNum+"只眼睛和"+tigerLegsNum+"条腿,我跑的可快了~");
   }
   public void breath()//重写老虎呼吸方法
   {
     System.out.println("老虎会呼吸");
   }
}
复制代码
package com.aiit.java_extends;
public class Chicken extends Animal{
  private int chickenLegsNum;//私有鸡腿的数量
  Chicken() //无参构造方法
  {
    System.out.println("我是没人疼(无参数)的小鸡,嘤嘤嘤~");
  }
  Chicken(int chickenLegsNum) //有参构造方法
  {
    super(2);
    this.chickenLegsNum = chickenLegsNum;
     System.out.println("我是有人疼(有参)小鸡哦"+"我有"+eyesNum+"只眼睛和"+chickenLegsNum+"条腿,我的腿可是某些小姐姐的最爱哦~");
  }
  public void breath() //鸡的私有方法
  {
    System.out.println("小鸡会呼吸");
  }
}
复制代码
package com.aiit.java_extends;
public class AnimalTest {
  public static void main(String[] args) {
    Animal an = new Animal();
    Animal Tg = new Tiger();
    Animal ch= new Chicken();
    System.out.println("----------------------------分割线-----------------------------");   
          an.breath();
    System.out.println("----------------------------分割线-----------------------------");
    Tg.breath();
    System.out.println("----------------------------分割线-----------------------------");
    ch.breath();
  }
}
复制代码

网络异常,图片无法展示
|

仔细研究一下这个Demo,分别是通过Animal类的实例化的对象,调用的三个breath()方法。然而他们输出都是Animal子类下的breath()方法。所以,这就体现出Animal的多种状态。即父类引用指向子类对象!这就是所谓的多态吧~


建议与总结


1.建议字段的访问权限能给小绝不给大,能使用private修饰的字段一定要用private,提高安全性。

2.继承的层次不要太深,建议最多继承三层,使用final修饰可以让类无法被继承。

3.抽象类的出现就是为了继承之后重写发生动态绑定。

4.能使用接口就不要使用抽象类,因为类只能单继承,但是接口可以“多继承”,更加的灵活。

5.多态的核心都是让调用者不必关注对象的具体类型. 这是降低用户使用成本的一种重要方式。

6.抽象类和接口的核心区别: 抽象类中可以包含普通方法和普通字段, 这样的普通方法和字段可以被子类直接使用(不必重写), 而接口中不能包含普通方法, 子类必须重写所有的抽象方法。

7.接口中的方法和字段定义都只写必要部分,尽量简洁像博主上面一样

目录
打赏
0
0
0
0
81
分享
相关文章
java中重载和多态的区别
本文详细解析了面向对象编程中多态与重载的概念及其关系。多态是OOP的核心,分为编译时多态(静态多态)和运行时多态(动态多态)。编译时多态主要通过方法重载和运算符重载实现,如Java中的同名方法因参数不同而区分;运行时多态则依赖继承和方法重写,通过父类引用调用子类方法实现。重载是多态的一种形式,专注于方法签名的多样性,提升代码可读性。两者结合增强了程序灵活性与扩展性,帮助开发者更好地实现代码复用。
141 0
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
【JAVA】封装多线程原理
Java 中的多线程封装旨在简化使用、提高安全性和增强可维护性。通过抽象和隐藏底层细节,提供简洁接口。常见封装方式包括基于 Runnable 和 Callable 接口的任务封装,以及线程池的封装。Runnable 适用于无返回值任务,Callable 支持有返回值任务。线程池(如 ExecutorService)则用于管理和复用线程,减少性能开销。示例代码展示了如何实现这些封装,使多线程编程更加高效和安全。
Java网络编程封装
Java网络编程封装原理旨在隐藏底层通信细节,提供简洁、安全的高层接口。通过简化开发、提高安全性和增强可维护性,封装使开发者能更高效地进行网络应用开发。常见的封装层次包括套接字层(如Socket和ServerSocket类),以及更高层次的HTTP请求封装(如RestTemplate)。示例代码展示了如何使用RestTemplate简化HTTP请求的发送与处理,确保代码清晰易维护。
|
6月前
|
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
407 15
|
8月前
|
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
730 60
|
9月前
|
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
153 3
|
9月前
|
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
188 2
|
9月前
|
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
142 2
|
9月前
|
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
179 1

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问