【Java】day9--main方法、单例设计模式、继承、方法重写部分知识点总结
(一)main方法
jvm调用main方法,jvm也是一个程序
main方法详解:
public:公共 保证该类在任何情况下,jvm都对其方法可见。
static:静态 避免创建对象,而且解决了创建对象传递参数的问题 。
void:没有返回值。jvm调用main方法,即使main方法有返回值,也是返回给jvm,jvm对于这个返回值没有作用。
main:并不是一个关键字,只是jvm识别的一个特殊的标识符,是程序的入口。
args:形参 参数需要在程序一执行的时候就传入。
没有static修饰的后果:
1.java虚拟机调用main方法的时候需要创建对象。
new demo1().main();
2.创建对象时偶尔需要传递参数。
但jvm不知道应该怎样传参,可能会导致错误。new demo1(null);
(二)单例设计模式
模式:解决一类问题的固定步骤。
软件行业23种设计模式:
1.单例设计模式
2.模板设计模式
3.观察者设计模式
4.工厂设计模式
5.代理设计模式
...
单例设计模式:保证一个类在内存中只有一个对象。
饿汉单例设计模式步骤:(推荐使用)
1.私有化构造函数
2.声明本类的引用类型变量,并且创建本类的对象。
3.提供一个公共的方法获取本类的对象。
代码:
class Single
{//创建本类的对象private static Single s=new Single();//私有化构造函数private Single(){ }//提供一个公共的方法获取本类的对象public static Single getInstance(){//加static是因为不能创建对象return s;}
}
class demo2
{public static void main(String[] args) {Single s1=Single.getInstance();Single s2=Single.getInstance();System.out.println("是同一个对象么?"+(s1==s2));//是同一个对象}
}
懒汉单例设计模式步骤:
1.私有化构造函数
2.声明变量的引用类型变量,但是先不创建本类的对象
3.提供一个公共静态的方法获取本类的对象,获取之前先判断是否已经创建对象,如果没有创建,那么先创建,再返回,否则直接返回即可。
代码:
class Single2
{//声明变量的引用类型变量,但是先不创建本类的对象private static Single2 s;private Single2(){}//提供一个公共静态的方法获取本类的对象,获取之前先判断是否已经创建对象,如果没有创建,那么先创建,再返回,否则直接返回即可。public static Single2 getInstance(){if(s==null)s=new Single2();return s;}
}
class demo2
{public static void main(String[] args) {Single2 s1=Single2.getInstance();Single2 s2=Single2.getInstance();System.out.println("是同一个对象么?"+(s1==s2));//是同一个对象}
}
懒汉模式存在线程安全问题。
(三)整体与部分
整体与部分的关系:在一个类的内部维护了另一个类的对象。
球队是整体,球员是部分。
例如:
//球员类
class Player
{int num;//球员编号String name;//球员名字//构造函数public Player(int num,String name){this.num=num;this.name=name;}public void Play(){System.out.println("训练好累~~");}
}
//球队类
class Team
{String name;//球队名字Player p1;//球员1Player p2;//球员2Player p3;//球员3//构造方法public Team(String name,Player p1,Player p2,Player p3){this.name=name;this.p1=p1;this.p2=p2;this.p3=p3;}public void startPlay(){System.out.println("训练开始啦~~");}
}
class demo3
{public static void main(String[] args) {Player p1=new Player(10,"小红");Player p2=new Player(11,"小花");Player p3=new Player(12,"小明");//创建一个球队Team t=new Team("阳光少女",p1,p2,p3);t.startPlay();System.out.println("3号球员的名字:"+t.p3.name);}
}
(四)继承
继承的格式:
class 类名1 extends 类名2{}
继承要注意的细节:
1.子类可以继承父类的成员。但是千万不要为了减少代码重复就继承,只有真正存在继承关系才继承。
2.父类私有的private成员是不能被继承的。
3.父类的构造方法不能被继承。
4.创建子类对象时,默认会先调用父类无参的构造函数。
调用父类的构造方法的作用是为了初始化从父类继承下去的属性。
(五)super关键字
super关键字:
代表的是父类的引用空间,在子类对象的内存空间中。
super的作用:
1.如果子父类存在同名的成员时,在子类中默认访问的是子类的成员,可以通过suoer指定访问父类的成员。
2.创建子类对象时,默认会先调用父类无参的构造函数,this可以在子类构造函数中指定调用父类的构造函数。
super调用父类构造函数的注意细节:
1.super调用父类构造函数时语句必须位于子类构造函数的第一个语句。
2.super(调用父类)、this(调用本类)调用构造函数时不能同时出现在同一个构造函数,因为两者都需要在第一个语句,而第一个语句只有一个。
普通函数中无法调用父类构造函数,子类构造函数中才可以。
(六)方法重写
父类的功能无法满足子类的需求,需要进行方法的重写。
方法重写的前提:两个类存在继承的关系。
方法重写:子父类存在同名的函数。
方法重写要求:
1.方法重写时,子父类函数名必须相同,参数列表也一致。
2.方法重写时,子类的权限修饰符必须要大于或等于父类的权限修饰符。
3.方法重写时,子类的返回值类型必须小于或等于父类的返回值类型。
4.方法重写时,子类抛出的异常类型必须小于或等于父类的类型。
Exception(最大异常)
RunTimeErrorException(较小)
例如:
class Student
{String name;int age;public Student(String name,int age){this.name=name;this.age=age;}public void study(){System.out.println(name+"在学习马克思列宁主义");}
}
class BaseStudent extends Student
{public BaseStudent(String name,int age){super(name,age);}public void study(){System.out.println(name+"在学习javaSE");}
}
class WorkStudent extends Student
{public WorkStudent(String name,int age){super(name,age);}public void study(){System.out.println(name+"在学习企业级应用开发");}
}class work3
{public static void main(String[] args) {Student s=new Student("老大",20);s.study();BaseStudent bs=new BaseStudent("小花",18);bs.study();WorkStudent ws=new WorkStudent("小米",19);ws.study();//System.out.println("Hello World!");}
}
【Java】day9--main方法、单例设计模式、继承、方法重写部分知识点总结相关推荐
- 对于java程序语言的单例设计模式讲解
1.设计模式:解决某一类问题最行之有效的方法.(java中有23种通用设计模式) 单例设计模式:解决一个类在内存中只存在一个对象. 2.单例设计模式有两种方式: 1)饿汉式 先初始化对象.当类一进内存 ...
- java饿汉式有啥作用,Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?...
什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的.如果重复 ...
- 单例设计模式java,浅谈Java编程中的单例设计模式
写软件的时候经常需要用到打印日志功能,可以帮助你调试和定位问题,项目上线后还可以帮助你分析数据.但是Java原生带有的System.out.println()方法却很少在真正的项目开发中使用,甚至像f ...
- Java中设计模式之单例设计模式-1
单例作用 1 节省内存 2 可以避免多种状态导致状态冲突 单例的创建步骤 1 私有化构造方法 2 私有化声明的属性 3 getInstance 4 方法需要静态 单例分类 1.懒汉式 2.饿汉式 两种 ...
- Java面试题 实现单例设计模式(懒汉、饿汉)
懒汉: //懒汉,顾名思义比较懒,在用的时候才实例化 public class Singleton {//创建实例,注意,此时没有newprivate static volatile Singleto ...
- java实现一个单例设计模式_Java正确实现一个单例设计模式的示例
Java正确实现一个单例设计模式的示例 发布于 2021-1-12| 复制链接 分享一篇关于关于Java正确实现一个单例设计模式的示例,小妖觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的 ...
- 高频面试题2:单例设计模式
Singleton:在java中即指单例设计模式,某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式.jvm中的runtime类. 1,只能有一个实例(构造器私有化) 2,必须自行创建这个实 ...
- 什么是Singleton,单例设计模式
Singleton [ˈsɪŋɡltən] 单例模式 在java中是指单例设计模式. 单例设计模式: 单例模式可以保证系统中,应用该模式的类一个类只有一个实例.即一个类只有一个对象实例. 例如:例如 ...
- Java笔记017-类变量和类方法、理解main方法语法、代码块、单例设计模式、final关键字
目录 面向对象编程(高级部分) 类变量和类方法 类变量-提出问题 传统方法解决 问题分析: 类变量快速入门 类变量内存布局 什么是类变量 如何定义类变量定义语法: 如何访问类变量 定义语法: 类变量使 ...
最新文章
- myeclipse下拷贝的项目,tomcat下部署名称和导出为war包的名称默认值修改
- 档案中级职称计算机需要考几个模块,2020年职称申报需要准备哪些档案资料?这些细节必须知道!...
- 快要普通话考试了,急需最后一题的根据话题自由讲话的演讲稿!(不要那些已经被用过...
- pr图形模板预设怎么使用_技术丨PR怎样安装动态图形模板?Pr mac版怎样调用Mogrt预设?Adobe Premiere导入MOGRTs预设完整教程...
- 纪中2018暑假培训day3提高a组改题记录(混有部分b组)
- python if and_python有趣用法汇总(持续更新)
- 复制给节点的命令_深入理解redis主从复制原理
- c语言两个线程交替打印奇数和偶数,经典面试题——两个线程交替打印奇数和偶数...
- ADO.NET常用对象详解之:Command对象
- spring-aop 的注释用法
- 昇腾万里·让AI无所不及!DevRun开发者沙龙在武汉成功举办
- paip.连接access2003数据库python3.3以及php5对比
- android随机生成字符串,Android随机字符串生成器
- 这几个截图文字识别软件可以自动识别文字
- 【HAVENT原创】kubernetes docker 常用指令
- PTC Onshape 的两个核心弱点
- python 聚类 客户细分_KMeans聚类:商城客户细分数据
- APICloud 原生模块、H5模块、多端组件使用教程
- 微信关注事件bug记录
- 抑制电源模块电磁干扰的几种方法
热门文章
- 对抗生成网络学习(九)——CartoonGAN+爬虫生成《言叶之庭》风格的影像(tensorflow实现)
- SqlConnection.ConnectionTimeout 与 SqlCommand.CommandTimeout
- 小白之AuthorizeAttribute权限控制(一)
- java过滤map去除重复数据,javascript模拟map输出与去除重复项的方法
- 面试测试开发工程师:Java测试进阶篇
- RFC2616-HTTP1.1-Header Field Definitions(头字段规定部分—单词注释版)
- Vue 2 | Part 5 列表渲染和事件监听
- 计算机竞赛主持人开场白台词,辩论赛流程主持人台词
- html中的marquee的属性,HTML中Marquee属性详解
- FZU 2207 ——以撒的结合——————【LCA + 记录祖先】