static

作用:  封装工具类  代码块   单例

被该关键字修饰,为静态变量或方法,

无需实例化就可通过类名来调用。

工具类的构造器尽量私有化,通过静态变量获取。

public static String name = "王伟琪";public static  getName (){return this.name
}

静态块

static:{       }

class 类的执行顺序, 执行静态块, main 方法 , 解析 成员方法和成员变量,构造函数,

单例模式

        饿汉单例设计模式 

1.定义一个类,把构造器私有

2.定义静态变量存储一个对象

//饿汉单例的设计步骤
/*1.定义静态变量保存类的实例,静态变量只加载一次2.构造方法为私有,将构造函数藏起来3. 利用变量获取类中静态方法  多个变量共享同一个实例*/
public class Single {public static Single insTance = new Single();private  Single(){}public static void main(String[] args) {Single s1 = Single.insTance;Single s2 = Single.insTance;Single s3 = Single.insTance;}
}

懒汉单例模式

class lanhanSingle {private static  lanhanSingle Instance;private  lanhanSingle(){}public static  lanhanSingle getInstance(){if(Instance==null){Instance = new lanhanSingle();}return Instance;}public static void main(String[] args) {}
}

继承

       子类继承父类的属性和行为。但是不能继承构造器 ,可以通过  super方法来调用()

子类可以用类名访问父类静态成员,不是继承,只是共享

不支持多继承,可以多层继承

所有类都是  object 的子类

package com.java.demo01;class Person {public static void prt(String s) {System.out.println(s);}Person() {prt("父类·无参数构造方法: "+"A Person.");}//构造方法(1)Person(String name) {prt("父类·含一个参数的构造方法: "+"A person's name is " + name);}//构造方法(2)
}public class Chinese extends Person {Chinese() {super(); // 调用父类构造方法(1)prt("子类·调用父类”无参数构造方法“: "+"A chinese coder.");}Chinese(String name) {super(name);// 调用父类具有相同形参的构造方法(2)prt("子类·调用父类”含一个参数的构造方法“: "+"his name is " + name);}Chinese(String name, int age) {this(name);// 调用具有相同形参的构造方法(3)prt("子类:调用子类具有相同形参的构造方法:his age is " + age);}public static void main(String[] args) {Chinese cn = new Chinese();cn = new Chinese("codersai");cn = new Chinese("codersai", 18);}
}

父类方法重写

@Override

重写方法与被重写方法参数,一致,权限大于被重写的方法

子类构造器默认访问父类无参构造器,再访问子类自身的。  super()这个方法可写可不写,默认都会访问父类无参构造器

super  必须放在构造器首行,this(); 也是放在第一行 ,所以两者不能共存。

导包

别的包下面的类 需要导包,然后使用

包下的不同类文件 可以互相调用方法或访问变量

import com.java.test.lalala.hello;
new hello();

final

1.修饰的变量为只读,修改会报错

2.修饰参数的话,参数也是不可变的

3.有且只能赋值一次

4.被修饰的父类方法无法被重写

抽象类

package com.java.test.DEMO;public abstract class Card {private String name;private double money;public  String getName() {return name;}public  void setName(String name) {this.name = name;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}public abstract void pay (double money);
}class white extends  Card{@Overridepublic void pay(double money) {System.out.println("当前消费 :" + money);System.out.println("当前余额 :" + super.getMoney());double rs = money*0.8;System.out.println("实际支付 :" + rs);super.setMoney(super.getMoney()-rs);System.out.println("当前余额 :" + super.getMoney());}
}
class gold extends Card {@Overridepublic void pay(double money) {System.out.println("当前消费 :" + money);System.out.println("当前消费 :" + money);System.out.println("当前余额 :" + super.getMoney());double rs = money*0.85;System.out.println("实际支付 :" + rs);super.setMoney(super.getMoney()-rs);System.out.println("当前余额 :" + super.getMoney());}
}
class  test{public static void main(String[] args) {white w = new white();w.setMoney(3000);w.setName("上坂堇");w.pay(1000);}
}

特点:

类有的,抽象类也有

抽象类中可以没有抽象方法,有抽象方法的一定是抽象类

抽象类无法实例化!

接口

可以定义方法,不写方法体

可以定义抽象方法,在实现类中定义

接口和类的关系

一个类只能继承另一个类

一个接口可以继承多个接口

一个类可以实现多个接口...但是多接口之间存在冲突则无法多继承


public interface user {public static final  String name = "王伟琪";public void run();public abstract void study();default void learn() {}static  void s(){}
}package com.java.interFace;public class me implements user {@Overridepublic void run() {System.out.println("重写接口的run方法");}@Overridepublic void study() {System.out.println("全栈的小王,lets go !");}public static void main(String[] args) {me m = new me();System.out.println(me.name);m.run();}
}

接口相关 (注意事项)

接口中的抽象方法和一般成员方法只需要方法名,无需方法体

接口中的静态方法需要接口名来调用

接口不能创建对象(对接口进行彻底的抽象)

一个类继承的父类和实现的接口有相同的方法,默认使用父类的!

多态

多态前提: 有父类引用或实现,子类有方法重写

同一个对象,执行同一个行为,表现出不同的行为特征

父类型  变量 = new  子类();

接口  变量  =  new  实现类();

方法调用  编译看左边  运行看右边

变量调用  编译 运行都看左边

        Animal dog = new dog();Animal rabbit = new rabbit();if(dog instanceof dog){dog dog2 = (dog) dog;dog2.wolf();}//多态下不能访问子类独有功能,可以通过类型强转来弥补
package com.java.polymorphic;public abstract class Animal {public String name="我叫王伟琪";abstract  void run ();
}class dog extends  Animal{public String name="我叫上坂堇";@Overridevoid run() {System.out.println("狗狗向你跑过来~");}
}
class rabbit extends  Animal{public String name="我是夜魔";@Overridevoid run() {System.out.println("蠢兔子向你跑过来...");}
}class  test{public static  void go(Animal a){a.run();if(a insTanceof dog){dog d = (dog) a;d.woff();
}}public static void main(String[] args) {Animal dog = new dog();Animal rabbit = new rabbit();go(rabbit);go(dog);System.out.println(dog.name);  //这里输出父类的变量}
}

类型强制转换

        有继承关系或实现关系的就可以进行强转

多态  接口  综合案例

        

package com.java.polymorphic;interface USB {void input();void output();
}class keyboard implements USB {@Overridepublic void input() {System.out.println("插入键盘成功");}@Overridepublic void output() {System.out.println("拔出键盘成功");}public void keyDowm() {System.out.println("正在输入...");}
}class mouse implements USB {@Overridepublic void input() {System.out.println("插入鼠标成功");}@Overridepublic void output() {System.out.println("拔出鼠标成功");}public void click() {System.out.println("正在选择...");}
}public class computer {public String getName() {return name;}public void setName(String name) {this.name = name;}private String name;public void install(USB a) {a.input();System.out.println(getName() + "开机了");if (a instanceof keyboard) {keyboard kb = (keyboard) a;kb.keyDowm();} else if (a instanceof mouse) {mouse m = (mouse) a;m.click();}a.output();}public computer(String name) {setName(name);}
}class Test {public static void main(String[] args) {computer com = new computer("微软电脑");USB a = new keyboard();USB b = new mouse();com.install(a);com.install(b);}
}

Java基础学习记录~~相关推荐

  1. Java 基础学习记录

    Java 基础 DAY1 1.关于进制的运算 2.关于存储单元 3.关于CMD的基本命令 4.JRE与JDK 5.Java环境变量 6.程序开发步骤 7.HelloWorld 8.标识符 9.常量 1 ...

  2. Java基础学习记录

    2019独角兽企业重金招聘Python工程师标准>>> 易忽略的小细节 在当前路径下按住shift键,右击"在此处打开命令行窗口"可以快速打开显示当前有java源 ...

  3. Java基础学习记录(三)

    System: 描述系统一些信息. 获取系统属性信息:Properties getProperties 因为Properties是Hashtable子类,也就是Map集合的一个子类对象. 那么可以通过 ...

  4. 2022-08-02 第二小组 张明旭 Java基础学习记录

    目录 心情日记 重点 知识点 创建线程 继承Thread类,并且重写run方法 实现Runnable接口 使用箭头函数(lambda表达式) 实现Callable接口 守护线程 线程的生命周期**** ...

  5. java基础学习整理(一)

    java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...

  6. Java基础学习:尚硅谷项目三 开发团队调度软件

    Java基础学习:尚硅谷项目三 开发团队调度软件 一.软件功能与结构设计 1. 软件功能 该软件实现以下功能: 软件启动时,根据给定的数据创建公司部分成员列表(数组) 根据菜单提示,基于现有的公司成员 ...

  7. Java基础学习(9)

    Java基础学习 一.常用方法(API) 1.1 Math 1.2 System 1.3 Runtime 1. 4 .object 1.5 Objects 1.6 BigInteger BigInte ...

  8. Java 基础学习-Java语言概述

    Java 基础学习 第一章 Java语言概述 回顾java基础知识,进行整理记录. 文章目录 Java 基础学习 前言 一. Java语言发展史(了解) 二.Java语言跨平台原理(理解) 三.JRE ...

  9. java基础学习总结(二)——开篇(转载于孤傲苍狼博主的心得体会)

    由于孤傲苍狼博主16年后,就没有更新博客了.其中有些文章看不了,挺可惜的.为了避免后续文章也会有类似情况,因此,他的博文基本都会转载过来,也会标注转载,做一个备份.不过文章太多,不会每篇文章都有转载于 ...

最新文章

  1. mysql添加用户查重的方法_mysql 开发技巧之JOIN 更新和数据查重/去重
  2. Logstash 父子关系 配置
  3. 在nginx下配置PATH_INFO的方法,包含新老版本的设置方法,以及$_SERVER[PATH_INFO]和phpinfo()函数的使用方法...
  4. gc日志一般关注什么_记一次生产频繁出现 Full GC 的 GC日志图文详解
  5. 编译乱序(Compiler Reordering)
  6. LeetCode题组:第836题-矩形叠加
  7. 【FI学习笔记】客户发票收款清账
  8. Scala多线程:使用Executors提交Callable任务代码示例
  9. 回顾线程的竞争机制-轻量级锁
  10. java importgeopoint_如何在地图上显示更多点(GeoPoint)?
  11. Spring Data JPA 从入门到精通~javax.persistence概况介绍
  12. JavaWeb 之 HttpServletResponse
  13. jmeter+接口测试练习+接口关联+Json提取
  14. 2020最新最稳微信公众号爬虫
  15. 省份及对应的英文名称
  16. cad图纸问号怎么转换文字_打开cad2016图纸字体和符号显示问号怎么办?
  17. Firefox火狐浏览器主页被360篡改了
  18. 搜索引擎Google的小秘密
  19. Unity摄像机跟随转动分析
  20. MySQL启动报错:发生系统错误5。拒绝访问。

热门文章

  1. odbc c语言 linux,C语言ODBC数据库操作
  2. ​stm32单片机真的可以取代51单片机吗?​
  3. 修电脑,不求人。(大全 不看你一定会后悔一辈子)
  4. 【每日一练】后台管理系统小案例
  5. DM数据库维护与管理-DEM监控管理
  6. 应急响应-Linux入侵排查(工具篇)
  7. 基于网络电话话营销数据的数据分析+机器学习预测
  8. SR-TE Policy(思科)----PCEP实验
  9. ValidationSummary控件
  10. minio分布式文件存储 windows部署 和 api 使用