public class Main {
{ //构造块(在构造对象时调用,先于构造方法执行)
System.out.println("我是构造块!");
}
static{ //静态块(在类加载时执行,且只执行一次【在构造块前执行】eg:数据库连接)
System.out.println("我是静态块!");
}
public Main(){
System.out.println("我是构造方法!");
}
public static void main(String[] args) {
Main m1 = new Main();
Main m2 = new Main();
}
}
/**
* 单例设计模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点
* 1.构造方法私有化
* 2.声明一个本类对象
* 3.给外部提供一个静态方法获取对象实例
* 两种实现方式:饿汉式、懒汉式
* 应用场合:工具类(例数据库)
*/
public class Main {
public static void main(String[] args) {
Singleton1 s1 = Singleton1.getInstance();
s1.print();
Singleton1 s2 = Singleton1.getInstance();
Singleton1 s3 = Singleton1.getInstance();
System.out.println(s1==s2); //输出true,s1,s2,s3都指向同一个对象 Singleton2 t1 = Singleton2.getInstance();
t1.print();
Singleton2 t2 = Singleton2.getInstance();
System.out.println(t1==t2); //输出true,t1,t2指向同一个对象
}
} /**
* 把该类设计成单例设计模式
* 饿汉式
*/
class Singleton1{
private static Singleton1 s = new Singleton1(); //饿汉,先new一个对象
private Singleton1(){}
public void print(){
System.out.println("饿汉式单例设计模式!");
}
public static Singleton1 getInstance(){
return s;
}
} /**
* 把该类设计成单例设计模式
* 懒汉式【在多线程访问时会有线程安全问题】
*/
class Singleton2{
private static Singleton2 s = null; //懒汉,先不new,调用时再new
private Singleton2(){}
public void print(){
System.out.println("懒汉式单例设计模式!");
}
public static Singleton2 getInstance(){
if(s==null){
s = new Singleton2();
}
return s;
}
}
/**
* 继承
* 1.Java只能实现单继承,也就是一个类只能有一个直接父类
* 2.继承只能继承非私有的属性和方法(public,protected,default)
* 3.构造方法不能被继承
*/
public class Main {
public static void main(String[] args) {
HomeDog d2 = new HomeDog("hels"); //父类的构造方法先执行(且只能执行父类的默认构造方法【无参】,除非显式调用)
d2.desc();
}
} class Dog{
String name;
public Dog(){
System.out.println("A dog born.");
}
public Dog(String name){
System.out.println("A dog:"+name+" is born.");
}
public void desc(){
System.out.println("I'm a dog.");
}
}
class HomeDog extends Dog{
public HomeDog(String name){
super(name); //表示父类的引用【必须放在第一句】
System.out.println("A HomeDog born.");
}
/**
* 方法的重写
* 1.发生方法重写的两个方法返回值、方法名、参数列表必须完全一致(子类重写父类的方法)
* 2.子类抛出的异常不能超过父类相应方法抛出的异常
* 3.子类方法的访问级别不能低于父类相应方法的访问级别(例:父protected 子public)
*/
public void desc(){
System.out.println("我是重写过后的方法!");
} }
class WildDog extends Dog{
public WildDog(){
System.out.println("A WildDog born.");
}
}
/**
* super关键字可以完成的操作:
* 1.调用父类中的属性
* 2.调用父类中的方法
* 3.调用父类中的构造方法
*/
public class Main {
public static void main(String[] args) {
BlackDuck d1 = new BlackDuck();
d1.desc();
}
} class Duck{
protected String name;
protected int price = 55; public void count(){
System.out.println("Duck price is "+price);
}
} class BlackDuck extends Duck{
public void desc(){
System.out.println("I'm a BlackDuck,My price is "+super.name);
super.count();
}
}
/**
* final关键字可以完成的操作:
* 1.声明一个类(最终类,不能被继承)
* 2.声明一个方法(这个方法不能再被子类重写)
* 3.声明一个常量(1.直接赋值 2.在构造方法中赋值)
*/
public class Main {
public static void main(String[] args) {
Girl g1 = new Girl(30);
g1.desc();
}
} final class Girl{
final String name = "fish7";
final int age;
public Girl(int age){
this.age = age;
}
public final void desc(){
System.out.println("I'm "+name+", My age is "+age);
}
}

JAVA笔记5__构造块、静态块/单例设计模式/继承/final关键字/super关键字的更多相关文章

  1. java笔记之静态修饰附和单例设计模式

     第六天笔记 静态修饰符static: 一.static修饰成员变量: static用来修饰成员变量叫静态成员变量,没有static修饰的成员变量叫非静态成员变量 静态成员的访问方式: (1)   用 ...

  2. JAVA之旅(六)——单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖

    JAVA之旅(六)--单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖 java也越来越深入了,大家加油吧!咱们一步步来 一.单例设计模式 什么是设计模式? JAVA当中有 ...

  3. Java中反射和Unsafe破坏单例设计模式

    有如下单例模式设计代码: class Singleton { private String info = "HELLO SHIT"; private static Singleto ...

  4. Java学习笔记——单例设计模式Singleton

    单例设计模式:singleton 解决的问题: 确保程序在运行过程中,某个类的实例instance只有一份. 特点: 1 构造函数私有化 2 自己内部声明自己 3 提供一个public方法,负责实例化 ...

  5. Java笔记(十一)……单例设计模式

    设计模式 解决某一类问题最行之有效的方法 Java中有23中设计模式 单例设计模式 解决一个类在内存中只存在一个对象 思路 将构造函数私有化 在类中创建一个本类对象 提供一个方法可以获取到对象 两种方 ...

  6. Java学习笔记(二十四):单例设计模式singleton

    为什么要使用singleton设计模式? 假设设计了一个操作数组的工具类(Tools),里面有一个锤子的方法(Hammer),如果不使用singleton设计模式,每次想调用Hammer方法都需要ne ...

  7. 菜鸡的Java笔记 第二十九 - java 单例设计模式

    SingleCase 单例设计模式        1.单例设计模式的特点        2.多例设计模式的特点    内容    单例设计模式        现在如果说有这么一个程序类 class S ...

  8. java的单例设计模式

    java的单例设计模式包括:饿汉设计模式和懒汉设计模式: 步骤: 1.创建一个对象把他设置为私有的成员变量,保证唯一 2.私有构造方法,防止new一个对象. 3.定义一个公开的静态方法,返回第一步创建 ...

  9. Java——单例设计模式

    设计模式:解决某一类问题最行之有效的方法.Java中23种设计模式:单例设计模式:解决一个类在内存中只存在一个对象. 想要保证对象唯一.1,为了避免其他程序过多建立该类对象.先禁止其他程序建立该类对象 ...

随机推荐

  1. POJ——3278 Catch That Cow(BFS队列)

    相比于POJ2251的三维BFS,这道题做法思路完全相同且过程更加简单,也不需要用结构体,check只要判断vis和左右边界的越界情况就OK. 记得清空队列,其他没什么好说的. #include< ...

  2. 利用 uber-go/dig 库管理依赖

    利用 uber-go/dig 库管理依赖 github 地址 官方文档 介绍 dig 库是一个为 go 提供依赖注入 (dependency injection) 的工具包,基于 reflection ...

  3. PHP中的强制类型转换

    学过静态语言开发的朋友对类型转换不会陌生,比如Java.C#.C++等.静态语言的好处就是变量强制必须指定类型,这也是编译的要求,所以大部分编译型的语言都会有强制变量类型的要求.而PHP据说也会在PH ...

  4. TP5路由的位置导致错误

    // 测试 '[js]' => [ ':id' => ['test/test/js', ['method' => 'get'], ['id' => '\d+']], ':id/ ...

  5. css 限制字数

    text-overflow: ellipsis; overflow: hidden; 不过需设置宽高

  6. 使用 FIO 对 Kubernetes 持久卷进行 Benchmark:读/写(IOPS)、带宽(MB/s)和延迟

    工具 Dbench https://github.com/leeliu/dbench 用法 编辑 dbench.yaml 文件中的 storageClassName 以匹配你自己的 Storage C ...

  7. Jmeter集合点技术

    集合点简介 好比小学时候做广播体操,先让大家集合,等到时间统一开始做体操. 创建集合点 同步定时器 同时签到 注意:作用域 参数设置 用户数 为0 具体数值,不能大于 超时时间 为0,没有超时时间 具 ...

  8. 记一次某网站生产环境CPU忽高忽低故障解决过程

    感谢 感谢[一级码农] 的帮助,之前也读了大佬的好多文章,一直在学习中,也没有实际操作过. 这次的过程也是在大佬的指点下完成的. 现象描述 从周六上午开始,陆续收到服务器CPU高的报警短信,到下午已经 ...

  9. Winform 控件命名规范

    前言 最近 Winform 项目做得比较多,控件命名规范上常用的能记住,但是有些总要查,写个记录吧.方便以后自己用,大家也可以参考. 标准控件 序号 控件类型简写 控件类型 1 btn Button ...

  10. MySQL8.0.20安装教程,MySQL8.0.20安装详细图文教程

    1.下载链接如下: MySQL8.0.20版本 https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-20.html 其他版本:MySQL8 ...