首页 > 其他分享 >封装,继承,多态

封装,继承,多态

时间:2022-09-26 20:57:40浏览次数:54  
标签:封装 继承 子类 多态 父类 super public

封装

属性私有get/set(有时候设置安全性的判断)

  1. 提高程序的安全性,保护数据

  2. 隐藏代码的实现细节

  3. 同意接口

  4. 系统可维护增加了

继承

  1. 继承的本质是对某一批嘞的抽象,从而实现对现实世界更好的建模

  2. e x t a n d s的意思是“扩展。子类是父类的扩展。

  3. Java中类只有单继承,没有多继承;

  4. 继承是类与类之间一种关系,除此之外,类和类之间的关系还有依赖,组合,聚合等

  5. 继承关系的俩个类,一个为子类(派生类),一个父类(基类)。子类继承父类,使用关键字extands.

  6. 修饰符:public,protected,default,private

  7. 快捷键:Ctrl+h(看自己继承的类)

super和this

super注意点:
  1. super调用父类的构造方法,必须在构造方法的第一个排
  2. super必须只能出现在子类的方法或者构造方法中
  3. super和this不能同时调用方法
​
Vs this:
  代表的对象不同:
    this:本身调用着这个对象
    super:代表父类对象的应用
  前提
    this:没有继承也可以使用
    super:只有在继承条件才可以使用
  构造方法
    this();本类的构造
    super():父类的构造

方法重写(Alt+Insert-->override)

都是方法的重写与属性无关

  1. 重写:需要有继承关系,子类重写父类的方法。

    1. 方法必须相同

    2. 参数列表必须相同

    3. 修饰符:范围可以扩大但是不能缩小:public-->Protected--->Defunct--->private

    4. 抛出异常:范围,可以被缩小,但是不能扩大:Class Not Found Exception---》Exception

    重写:子类的方法和父类必须一致,方法体不同

    为什么需要重写:

    1. 父类的功能,子类不一定需要,或者不一定满足

多态

public class Person {
    public void run(){
        System.out.println("run");
    }
​
}
public class Student extends Person{
    @Override
    public void run() {
        System.out.println("sun");
    }
    public void eat(){
        System.out.println("cat");
    }
}
import com.oop.Demo05.Person;
import com.oop.Demo05.Student;
​
import java.util.Scanner;
​
public class Application {
    public static void main(String[] args) {
        //一个对象的实际类型是确定的
        //可以指向的引用类型就不确定了;父类的引用指向子类
​
        //student子类能调用的方法都是自己的或者继承父类的
        Student s1 = new Student();
        //person父类,可以指向子类,但是不能调用子类独有的方法
        Person s2 = new Student();
        Object s3=new Student();
        //对象能执行那些方法,主要看对象左边的类型,和右边的关系不大
        s2.run();//子类重写父类的方法,执行的是子类里面的方法
        s1.eat();
        ((Student) s2).eat();
​
    }
​
}
/*
多态注意事项:
 1. 多态是方法的多态,属性没有多态
 2. 父类和子类,有联系,类型转换异常ClassCastException
 3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象 Father 发=new Son();
 不能重载的
 1. static方法,属性类,他不属于实列
 2. final 常量;
 3. private方法;
 */

标签:封装,继承,子类,多态,父类,super,public
From: https://www.cnblogs.com/lyhidea/p/16732421.html

相关文章

  • java 封装一个二分查询函数
    packageBinarySearch;importjava.lang.reflect.Array;publicclassTest{publicstaticvoidmain(String[]args){intarr[]={2,6,7,8,9,11,13,......
  • 继承
    this&super关键字this的两个含义指示隐式参数的引用,也就是当前对象实例调用当前类的其他构造方法关键字super的两个含义调用超类的方法调用超类的构造方法i......
  • 封装日志Mylogger
    importloggingimportosfromCommon.handle_pathimportlogs_dirfromCommon.handle_configimportconfclassMyLogger(logging.Logger):def__init__(self,f......
  • 封装配置文件,读取配置文件
    #封装配置文件fromconfigparserimportConfigParserimportosfromCommon.handle_pathimportconf_dirfile_path=os.path.join(conf_dir,'config.ini')class......
  • Python菱形继承(网易面试题)
    菱形继承顾名思义,是一个菱形继承(好像是废话),直接上图  菱形继承就是多继承,例上图所有,A是父类,B和C是A的子类,B和C是D的父类。classParent(object):def__init__(......
  • 基于el-dialog封装全局弹窗
    dialog<template><div><el-dialogtitle="切换考试"top="9vh":modal="false"width="600px":visible.sync="dialogVisible"@close="close":append-to-body......
  • PADS应用笔记:Logic画元件封装时端点无法编辑属性
    现象在画原理图元件封装时,定义的端点无法设置属性原因画逻辑时候只能定义端点,是没办法设置属性的,只有在编辑元件时才能设置属性......
  • PADS应用笔记:Logic画元件封装时端点不见了
    现象画原理图的元件封装时,画好的CAE逻辑明明定义里很多端点但是导入到元件时就都不见了,只剩下个2D线方框原因出现这种原因是因为在元件的电气特性里没有定义对应引......
  • 继承中构造方法的访问特点和super关键字的三种用法
    继承中构造方法的访问特点1.子类构造方法当中有一个默认隐含的“super()"调用,所以一定是先调用的父类构造,后执行的子类构造。2.子类构造可以通过super关键字来调用父类重......
  • 打印 Logger 日志时,需不需要再封装一下工具类?
    在开发过程中,打印日志是必不可少的,因为日志关乎于应用的问题排查、应用监控等。现在打印日志一般都是使用slf4j,因为使用日志门面,有助于打印方式统一,即使后面更换日志框架,......