疯狂java讲义

封装:

  • 封装:将对象状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是用类所提供的方法访问和操作。
  • 访问控制符:private(当前类访问权) ,protected(子类访问),public(公共访问),default(包访问)
  • set(),get()
  • 构造器重载,名字相同 ,形参不同。
  • 构造器中调用另一个构造器用this();必须出现在构造器第一行。
  • 方法重载:名字相同,形参不同。与返回值,修饰符无关。

继承:

  • 继承:每个子类只有一个直接父类,extends。
  • 默认继承java.lang.Object,是所有类的父类。
  • 子类可以重写父类方法。方法重写。两同两小一大:方法名同,形参同,返回值小,异常小,子类访问权限大。
  • 子类覆盖后子类对象不可调用父类方法,但可在子类方法中调用,super(实例方法),父类类名(类方法)来调用。
  • 如果父类private,那方法对子类隐藏,子类无法调用,无法重写。
  • super:也可用来访问父类被覆盖的实例变量。
  • 会为所有实例变量分配内存。(被覆盖了也分配)
  • 子类也可以用super调用父类构造器。
  • 子类没有super调用父类构造器,系统会在执行子类构造器之前调用父类构造器。
  • 父类构造器在子类构造器之前进行,还会上溯,最先执行的总是java.lang.Object构造器。

继承注意点:子类可以访问父类成员变量和方法,不安全

  • 尽量隐藏父类内部数据,private
  • 不让子类随便访问,修改父类方法,不能访问private.如果希望访问不让重写,用final public,可以被子类重写不能被外部访问用protected.
  • 尽量不在父类构造器中调用被子类重写的方法。

多态:编译时类型和运行时类型不同,相同类型的变量调用同一个方法呈现多种不同行为特征。

  • 编译时类型:声明该变量时的类型。
  • 运行时类型:实际赋给该变量的对象。
  • 子类对象赋给父类引用变量——向上转型,系统自动完成。
  • 父类对象赋给子类引用变量——强制类型转换,instanceof判断更安全,否则ClassCastException
  • 最终类不能被继承:1.用final修饰类,2.用private修饰类的所有构造器,子类无法调用,就无法继承。
  • 组合复用。

初始化块:

  • 可有修饰符static。初始化块按顺序进行。
  • 创建对象时,先调用类里的初始化块再执行构造器。
  • 初始化块是构造器补充,在构造器前执行。
  • 但是不能接受任何参数,对所有对象初始化相同。

 

 

  • ==和equals:引用变量用==时,只有他们指向同一个对象才true。==两边没有父子关系的两个对象会编译错误。
  • “hello”直接量存在常量池,new String ("hello")Jvm会用常量池保存"hello",在调用String类构造器创建一个新对象,保存在堆内存中。所以不相等。
  • 值相等用str1.equals(str2);

 

 

  • 类成员,类方法,即使实例是Null也可以访问类成员,null访问实例成员会引发NullPointerException。
  • 静态初始化块也是类成员,类初始化时调用,之后不再执行,
  • 类成员不能访问实例变量。

 

  • 单例类:一个类只能创建一个实例。构造器private。提供一个public 方法作为访问点,用于创建对象,且是public static.且类还必须缓存已经创建的对象。用一个成员变量来保存曾创建的对象,要被静态方法访问,必须也static.
  • 只能创建一个对象,再多引用所指的都相等。
  • final:
  • 修饰变量,该变量一旦有初始值就不可改变,final修饰的成员变量必须显示指定初始值,系统不会对final成员隐形初始化,final修饰局部变量,修饰形参
  • final修饰引用变量,final保证指向的对象不变,但对象内容可以改变。
  • final修饰变量,宏定义,定义final时就为变量指定初始值,在编译时确定,final变量实际是宏变量。
  • 修饰方法,不可被子类重写。但可以被类内重载
  • 修饰类:不可以有子类,不可被继承、

 

  • 不可变类:创建该类实例后,该实例实例变量不可改变。
  • 规则:1.用private和final修饰该类成员变量   2.提供带参数构造器,传入参数来初始化。  3.只为该类成员提供getter().不能setter()

 抽象:

  • 抽象方法,抽象类:abstract。
  • 抽象方法不能有方法体,抽象类不能被实例化,不能new.这个类只能被继承。
  • 抽象方法没有方法体,必须被子类重写。
  • final与abstract不能同时用。static和abstract也不能同时修饰同个方法。
  • 抽象类只定义某些方法,把不能实现的部分抽象成抽象方法,留给子类实现。

 

转载于:https://www.cnblogs.com/Aozorazy/p/10444636.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将背景色添加到Word 2007文档中

Instead of using the standard white background with Word documents, here is how to add some background color to spice up your documents. 代替在Word文档中使用标准的白色背景,这是如何添加一些背景颜色来为文档增添色彩。 Open your word document and ch…

jquery实现增删改(伪)-老男孩作业day13

使用jquery进行&#xff0c;文件的编写&#xff0c;实现自增id,删除&#xff0c;添加&#xff0c;编辑模式。 jquery放在本地&#xff0c;src"jquery_js.js" 可以改成其他&#xff0c;或者在线的路径 readme<!DOCTYPE html> <html lang"en"> &…

uoj#119. 【UR #8】决战圆锥曲线(线段树+复杂度分析)

题解 传送门 题解 然而要我来说我感觉只是个爆搜啊…… //minamoto #include<bits/stdc.h> #define R register #define ll long long #define ls (p<<1) #define rs (p<<1|1) #define fp(i,a,b) for(R int ia,Ib1;i<I;i) #define fd(i,a,b) for(R int ia…

如何在Raspberry Pi上设置两因素身份验证

Kiklas/ShutterstockKiklas /快门The Raspberry Pi is everywhere now, which is why it’s caught the eye of threat actors and cybercriminals. We’ll show you how to secure your Pi with two-factor authentication. Raspberry Pi现在无处不在&#xff0c;这就是为什么…

Laravel Passport里的授权类型介绍

本文来自pilishen.com----原文链接; 欢迎来和pilishen一起学习php&Laravel&#xff1b;学习群&#xff1a;109256050OAuth2是一个安全框架&#xff0c;控制着程序受保护部分的准入&#xff0c;主要是控制不同的客户端如何来调取API&#xff0c;保证它们在请求相应资源的时候…

vue 开发环境搭建

1.创建vue项目 1.node js 生成项目&#xff0c;编译项目 2.hbuilder 开发环境 1.下载安装node js http://nodejs.cn/download/ 确认是否安装成功 如果安装不了 代码错误2503 解决方法&#xff1a; 管理员命令运行cmd; cd\ cd C:\Users\Administrator\Desktop msiexec/package n…

iphone视图放大_如何将iPhone用作放大镜

iphone视图放大It’s a common problem: Some things are just too hard to see. Usually, they’re too far away, too dark, or too small. With a feature called Magnifier, your iPhone can function as a magnifying glass and sight aid. Here’s how to use it. 这是一…

chmod权限

本文引用:https://www.cnblogs.com/zhangym/p/5826200.html linux数字权限解释 644 第一位代表文件所有者的权限,第二位代表同组用户的权限&#xff0c;第三位代表其他用户的权限. 读取权限等于4,用r表示;写入权限2,用w表示;执行权限1,用x表示. 通过4、2、1组合,得到以下几种权…

输出最大值MXNet实现

网络结构&#xff0c;输入为2个数&#xff0c;先经过10个节点的全连接层&#xff0c;再经过10个节点的ReLu&#xff0c;再经过10个节点的全连接层&#xff0c;再经过1个节点的全连接层&#xff0c;最后输出。 #-*-coding:utf-8-*- import logging import math import random im…

discord linux_如何在Discord中应用文本格式

discord linuxDiscord allows for text-and audio-based chatting between gamers and other like-minded individuals. If you want to make a bigger impact on Discord, you can use formatting to jazz up your text-based messages. Here’s how. Discord允许游戏玩家和其…

一张图看懂阿里云网络产品[十二]云企业网

2019独角兽企业重金招聘Python工程师标准>>> 摘要&#xff1a; 阿里云致力于为用户提供优质、高效、稳定的网络传输环境&#xff0c;云企业网&#xff08;Cloud Enterprise Network&#xff09;将提供一种能够快速构建混合云和分布式业务系统的全球网络&#xff0c;…

# 2019-2020.3 《java程序设计》第一周学习总结

2019-2020-3 《Java 程序设计》第一周学习总结 在本周的学习中&#xff0c;学习到了好多也收获了好多&#xff0c;从最基础的安装虚拟机开始&#xff0c;根据老师的博客中的教程一步一步的进行&#xff0c;在这过程中也遇到了好多问题&#xff0c;因为是初步接触Linux系统&…

聊聊Java反射

反射是Java最重要的特性。通过Java反射可以在运行时知道一个类的所有成员和方法&#xff0c;知道一个对象的类类型、成员和方法的所有信息&#xff0c;进而调用对象的方法或生成对象的代理或包装类。Java是面向对象语言&#xff0c;除了静态变量或原始数据类型外都是完全面向对…

01. 把存储过程结果集SELECT INTO到临时表

原文:01. 把存储过程结果集SELECT INTO到临时表在开发过程中&#xff0c;很多时候要把结果集存放到临时表中&#xff0c;常用的方法有两种。 一. SELECT INTO 1. 使用select into会自动生成临时表&#xff0c;不需要事先创建 select * into #temp from sysobjects select * fro…

day5学python 基础+装饰器内容

基础装饰器内容 递归特性# 1.必须有一个明确的结束条件# 2.每次进入更深一层递归时&#xff0c;问题规模相比上次递归应有所减少# 3.递归效率不高 def run(n):print(n)if int(n/2)>0:return run(n / 2)print("-->",n) run(10) 局部变量与全局变量知识 1.全局变…

如何在Windows 10上跳过回收站以删除文件

Windows 10 normally sends files you delete to the Recycle Bin. They’ll be kept until you empty it—or, in some cases, until Windows 10 automatically empties your Recycle Bin. Here’s how to skip the Recycle Bin and delete files immediately. Windows 10通常…

OSChina 周日乱弹 —— 我叫张一条

2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单&#xff08;2018&#xff09;请戳&#xff08;这里&#xff09; 【今日歌曲】 莱布妮子 &#xff1a;分享Lube的单曲《Skoro dembel》 《Skoro dembel》- Lube 手机党少年们想听歌&#xff0c;请使劲儿戳&am…

面向对象初识

一. 面向对象初识 1.1 回顾面向过程编程vs函数式编程 # 面向过程编程 测量对象的元素个个数。 s1 fjdsklafsjda count 0 for i in s1:count 1l1 [1,2,3,4] count 0 for i in l1:count 1 面向过程编程def func(s):count 0for i in s:count 1return count …

iOS逆向:在任意app上开启malloc stack追踪内存来源

lldb有一个内存调试工具malloc stack&#xff0c;开启以后就可以查看某个内存地址的malloc和free记录&#xff0c;追踪对象是在哪里创建的。 这个工具可以打印出对象创建的堆栈&#xff0c;而在逆向时&#xff0c;也经常需要追踪某些方法的调用栈&#xff0c;如果可以随时打印出…

【CH4302】Interval GCD

思路&#xff1a;线段树维护a的差分数组的gcd&#xff0c; 因为$gcd(a_1,a_2,a_3,...,a_n)gcd(a_1,a_2-a_1,a_3-a_2,...,a_n-a_{n-1})$。 原区间修改可以转化为差分数组上的两次单点修改。 因为实际计算时还需要原数&#xff0c;所以用树状数组维护b的增减量。 询问时&#xff…