面向对象编程(代码片段)

爱内卷的王同学 爱内卷的王同学     2023-01-06     383

关键词:

面向对象编程(包、继承、组合、多态 、抽象类、接口)

包其实就是类的集合,其本质上其实就是一个文件夹,里面存放的. java 文件里面有我们写的代码,并且包的存在还可以有效解决在实际开发过程中程序员. java文件命名重叠问题,其实就是,一个包里面是能有两个名字相同的.java文件,但是如果是不同的包下就允许这样的情况存在。

我们创建一个包只需要在 src 目录底下去创建就行了,公司里面给报的命名一般都是用公司的域名的倒过来的形式,总而言之,要让别人看出来是这个包的作用。

还有就是,包中的权限问题,一个包或者包之中的内容压实有权限的我们先前已经了解的 private 和 public 权限区别是前者只能在当前类里面用,后者则可以在整个工程里面使用。但是如果一个包中的类或者类中的内容没有任何修饰符,那么即为默认权限。这种权限下面仅限在当前包中使用,想要跨包调用是不可能的。

继承

继承其实就是抽象和具体的关系,关键的地方就是将共性提取出来放在一个类里面,随后在交给下面具体的类去使用,譬如:猫,狗,这两个类的共性就是会吃饭,会叫,会跑,那么我们就将这三个共性抽象出来,创建一个类 :动物,让这个类里面包含前面那三种行为,这样的话,猫,狗两个类直接就写自己继承那个名叫动物的类,这样的话就可以省去大量重复的代码,大大减少我们的代码量。当然自己的类里面也可写上自己的独特行为,比如:猫的类里面可以写猫可以上树,这是猫所特有的。。下面看具体的代码示例。

class Animal 
    public void eat 
        System.out.println("吃饭");
    
    public void shout 
        System.out.println("吼叫");
    
    pubic void run 
        System.out.println("跑步");
    

class Dog extends Animal
    

class Cat extends Animal 
    public void climbtree 
        System.out.println("爬树");
    

public class Test 
    

总而言之,可以把继承这种关系理解成 is a ,cat is a animal( 语法不要在意)。

super 关键字

super关键字与this的用法非常相似,super用于引用当前父类的对象的引用,使用super可在子类里面引用父类里面的字段和方法。

并且当我们想要给子类对象赋值的时候,我们是通过构造方法来赋值的,但是值是在父类里面的,因此,我们必须要先有父类的构造才能有子类构造,所以我们要使用 super来调用父类的构造方法(原理一如 this 调用 构造方法一样)。

此外,继承还可层层继承下去,套好几层,当然不推荐这样做,这个时候再使用super 引用的就是其最直接的那个父类。

class Animal 
    public String name;
    public Animal(String name) 
        this.name = name;
        System.out.println(this.name);
    

class Cat extends Animal 
    public Cat (String name) //此处为cat这个类的构造方法
        super(name);//此处即为声明调用父类那个只有一个参数的构造方法
    

public class Test 
       public static void main(String[] args) 
        Cat cat = new Cat("咪咪");
    

//最后打印结果为 咪咪

其实在我们正常继承中也会有第八至十行这样的代码,但是一般来说都是省略的,看不见的,就像是默认构造方法一样,里面没有参数。

下面便是我们的普通默认情况。

class Cat extends Animal 
    public Cat () 
        super();
    

final

被 final 修饰的类是不可以继承的,一如被 final 修饰的变量不可以被改变一样,只要记住 final 修饰的东西就意味着不灵活,不能随意更改即可。

protected关键字

protected 是一种权限,使用了他之后可以在同一个包的同类或者不同类下面引用,或者不同的包的子类。

protected 与其他几种包的子类:

组合

类似于上面的,组合就是 has a 的关系。一辆小轿车在组装的时候,其自身含有四个轮子,两个后视镜,一个车标,等等。

其实就是讲一个类的示例当成里一个类的字段。

public class Student 
...

public class Teacher 
...

public class School 
   public Student[] students;
   public Teacher[] teacher;

多态

多态的发生条件是在,父类和子类当中的函数重写,且发生向上转型的的时候才会产生,而重写的条件则是要求两个函数的参数条件,函数内容完全一致。

(重写特点:函数名相同,返回值相同,函数列表相同;

重载的特点:函数名相同,函数的参数列表不同,返回值不做要求)

步骤:我们先通过 把子类对象的引用传给父类对象的引用 (或者其他方法,总之要保证让父类对象的引用指向子类对象的引用所指向的),这样我们便发生了向上转型,之后再用父类对象的引用来引用父子类公有的函数,这个时候就会发现,结果出来为子类。这就是由于编译时程序引用的是父类当中的函数,但是当运行时就改引 子类当中的函数了,这也就是所谓的动态绑定,在父类基础上又绑了子类,这样,我们每次给父类对象的引用附上不同的子类对象的引用,就会导致最后产生不同的结果,这便是所谓多态,多种状态。

下面看代码示例:

class Animal  
    public String name;
    public Animal (String name) 
        this.name = name;
    
    public void running() 
        System.out.println(this.name + "正在跑(animal)");
    

class Rabits extends Animal 


    public Rabits(String name) 
        super(name);
    

    public void running() 
        System.out.println(this.name + "正在跑(rabits)");
    

class Cat  extends Animal 


    public Cat (String name) 
        super(name);
    

    public void running() 
        System.out.println(this.name + "正在跑(Cat)");
    

class Pig extends Animal 


    public Pig (String name) 
        super(name);
    

    public void running() 
        System.out.println(this.name + "正在跑(Pig)");
    


public class TestDemo 

    public static void main(String[] args) 
        Animal animal = new Rabits("兔兔");
        animal.running();
        Animal animal2 = new Cat("猫猫");
        animal2.running();
        Animal animal3 = new Cat("猪猪");
        animal3.running();
    


执行结果,可以很明显看到,虽然是用 animal 来引用的,但是最后打印的都是子类自己的

抽象类

抽象类专门就是用来服务于多态的,它没有办法实例化,并且类的前面必须要有一个 abstract 来修饰它,下图为抽象类的特性整理。

接口

接口是由用来弥补继承的不足的,继承的话只能继承一个类,但是如果是接口的话,一个类就可以 implements 多个接口 ,而且接口注重的是功能,我们需要在意的是它里面有哪些我们需要的功能,如果有派上用场的就把它 implements 过来。

面向对象编程(代码片段)

创建类和对象 面向对象编程是一种编程方式,此编程方式的落地需要使用“类”和“对象”来实现,所以,面向对象编程其实就是对“类”和“对象”的使用。类:就是一个模板,模板里可以包含多个函数,函数里实现一些... 查看详情

javascriptjs-面向对象编程(代码片段)

查看详情

面向对象(代码片段)

一.函数式编程和面向对象的对比  面向过程:根据业务逻辑从上到下写垒代码  函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可  面向对象:对函数进行分类和封装,让开发“更快更好更强..... 查看详情

python面向对象编程(代码片段)

文章目录一、什么是面向对象编程二、类(class)和实例(instance)三、特性之一——数据封装四、访问限制五、特性之二、三——继承和多态-继承-多态六、获取对象信息-Type()-isinstance()-dir()七、实例属性和类属性此文参考廖雪峰官网... 查看详情

面向对象编程(代码片段)

面向对象编程面向过程编程:核心是过程,过程是一步一步的。先干啥,后干啥。对扩展性要求较低的程序例如:系统内核,git,计算器,等等。优点:逻辑清晰,复杂问题简单化,流程化缺点:扩展性差,可维护性差面向对象... 查看详情

python进阶—面向对象编程(代码片段)

目录文章目录目录面向对象思想面向对象编程面向对象编程的特性封装继承多态面向对象编程的优势Python的类属性与类方法Python类的实例化Python的对象属性与对象方法Python类的继承面向对象思想面向对象不仅是一种编程思想࿰... 查看详情

面向对象编程(代码片段)

一面向对象编程与面向过程编程1面向过程编程思想该思想核心是过程,指的是解决问题的步骤,即先干什么然后干什么,就像流水线一样,必须一步一步来,基于面向过程编程的是一种机械化的思维方式。优点:复杂问题流程... 查看详情

转载面向对象编程(代码片段)

...:https://blog.csdn.net/sunshine940326/article/details/72872386什么是面向对象编程面向对象的思想主要是以对象为主,将一个问题抽象出具体的对象,并且将抽象出来的对象和对象的属性和方法封装成一个类。面向对象是把构成问题事务分... 查看详情

面向对象简介(代码片段)

一、学习目标1.面向对象的技术语法2.面向对象的编程思想二、面向对象的概念OOP(Object-Programming,面向对象的编程)技术为编程人员敞开了一扇大门,使其编程的代码更简洁、更易于维护,并且具有更强的可重用性。三、OOP达到了... 查看详情

面向对象编程(上)(代码片段)

第四章面向对象编程(上)4.1面向对象(OOP)和面向过程(POP)4.2Java语言的基本元素:类和对象4.3对象的创建和使用4.1面向对象(OOP)和面向过程(POP)面向对象和面向过程二者都是一种思想,面向对象是相对于面向过程而... 查看详情

面向对象编程(代码片段)

面向对象基础面向对象编程介绍'''面向过程的编程思想核心过程二字,过程指的是解决问题的步骤,即先干什么\再干什么\后干什么基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式优点:复杂的问题流... 查看详情

scala学习(函数式编程面向对象编程)(代码片段)

...础函数编程函数定义函数参数函数至简原则高阶函数编程面向对象编程基础面向对象编程高阶面向对象编程函数式编程基础函数编程函数定义packagelearn03objectdemo01defmain(args:Array[String]):Unit=//无参、无返回值deffun1():Unit=println(&... 查看详情

scala学习(函数式编程面向对象编程)(代码片段)

...础函数编程函数定义函数参数函数至简原则高阶函数编程面向对象编程基础面向对象编程高阶面向对象编程函数式编程基础函数编程函数定义packagelearn03objectdemo01defmain(args:Array[String]):Unit=//无参、无返回值deffun1():Unit=println(&... 查看详情

php面向对象(代码片段)

1.面向对象介绍     面向对象是一个编程思想。编程思想有面向过程和面向对象     面向过程:编程思路集中的是过程上     面向对象:编程思路集中在参与的对象2.面向对... 查看详情

面向对象,类(代码片段)

面向对象编程参考博客:www.cnblogs.com/Eva-J/p/7277026.html编程:  1面向流程编程:核心是过程,  2面向对象编程:解决了程序的扩展性,对某一个对象单独的修改,会立刻反应到整个体系中,如游戏中的一个人的参数的特征和... 查看详情

markdown学习-面向对象的编程(代码片段)

查看详情

面向对象编程-总复习(代码片段)

目录面向对象基础面向对象编程类与对象对象的属性的查找顺序给对象定制独有属性对象的绑定方法类与数据类型面向对象进阶类的继承类的派生类的组合菱形继承问题多态与多态性类的封装类的property特性类与对象的绑定方法... 查看详情

面向对象编程(代码片段)

...式即编程的方法论,标识一种编程风格.三大编程范式:1.面向过程编程:面向过程是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函... 查看详情