java韩顺平学习笔记3

java韩顺平学习笔记3

类变量(静态变量)

image-20230725193101282

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dzc7LNdU-1690554111773)(C:\Users\luwen\AppData\Roaming\Typora\typora-user-images\image-20230725193637853.png)]

类中定义一个count,所有对象共享

public static int count = 0;

image-20230725201014362

类变量(静态变量)访问方法

  • 类名.类变量(推荐)

  • 对象名.类变量

类方法(静态方法)

  • 调用方法的2种方式:
  1. 类名.类方法(static方法才可以这么调用,普通方法无法这么调用)(优点)

  2. 对象名.类方法

image-20230726140602262

类方法使用注意事项

image-20230726140716494

类方法中不能使用this和super

**口诀:**静态方法只能访问静态成员(属性,方法)

main语法

image-20230726163402694

args是一个字符串数组,可以接受数组参数

    public static void main(String[] args) {
        for (int i = 0; i <args.length ; i++) {
                    System.out.println("args[" + i + "]" + args[i]);
                }
    }

main动态传值方法

image-20230726165015111

在Program arguments中输出要传入的字符串数组

image-20230726165059798

运行如下

image-20230726165333903

代码块

image-20230726165612148

  • 代码块在类中,如果使用构造器,那就会先自动运行代码块,再运行构造器,提高复用性

代码块使用细节

  • 要背 (代码块什么时候被调用,类什么时候加载)

image-20230726170337678

  • 构造方法、代码块、属性的初始化优先级顺序

image-20230726193525243

  • 重点解释1

image-20230726200734583

  • 重点解释2

image-20230726201133580

public class Test {
    public static void main(String[] args) {
      new Fish();
    }
}

class Animal {      //父类
    //父类普通代码块
    {
        System.out.println("父类Animal普通代码块被调用");
    }
    
    //父类静态代码块
    static {
        System.out.println("父类Animal静态代码块被调用");
    }
    
	//父类构造器
    public Animal() {
        System.out.println("父类Animal构造器被调用");
    }
}
class Fish extends Animal{      
	//子类静态代码块
    static{
        System.out.println("子类Fish静态代码块被调用-----");

    }
    
    //子类构造器
    public Fish() {
        System.out.println("子类Fish()被调用--------");  //构造器最后
    }
    
		//子类普通代码块
    {
        System.out.println("子类Fish普通代码块被调用-----");
    }

}

输出如下,静态—>普通—>构造器(由super()会有父类的普通+静态 与子类的静态,判断为父类的静态优先)

image-20230726195943733

单例设计模式(设计模式有23种)

设计模式是什么

image-20230726201628575

单例设计模式介绍

image-20230726201609396

饿汉式(不使用也会创建实例)

image-20230726201826500

public class eHanS {
    private String name;
    private static eHanS eh =new eHanS("德莱文");      //创建新对象,静态变量只会初始化一次
    //私有构造器
    private eHanS(String name) {
        this.name = name;
    }
    //返回一个对象
    public static eHanS getEHanS() {
        return eh;		//静态方法只能调用静态属性
    }
}
public class Test {
    public static void main(String[] args) {
    
    }
}

***代码解读:***由于eh是静态static,所以只会初始化一次eh静态变量

懒汉式(使用的时候才会创建对象,会有线程安全问题)

class lHanS{
    private String name;
    public static lHanS aa;

    private lHanS(String name) {
        this.name=name;
    }
    
    public static lHanS getLHanS(){
        if(aa==null){		//判断是否创建了
            aa=new lHanS("德莱文");
        }
        return aa;
    } 
}

Final关键字(常量)

image-20230727144342259

final使用细节

image-20230727145403555

  • final常量一定要赋初值,可以在下面方式之一
class fianlTest{
    public final int age;
    public fianlTest(){
        age =10;			//final常量在构造器中初始化
    }
}
class fianlTest{
    public final int age;
    {
        age = 10;			//final常量在代码块中初始化
    }
}
public final int age = 10;	//在定义时初始化

image-20230727150918951

Demo.i;		//不会导致类加载,类不加载,静态代码块就不会运行

抽象类(abstract修饰符)

image-20230727160345953

image-20230727160735136

抽象类使用细节

image-20230727160932339

image-20230727161227397

image-20230727162959824

抽象模板模式

image-20230727183757784

接口

image-20230727233419731

接口入门代码

  • 接口代码
public interface UsbImplements {
    public void start();

    public void end();
}
  • 实现接口的类代码
public class Phone implements UsbImplements {
    @Override
    public void start() {
        System.out.println("Phone开始工作");
    }

    @Override
    public void end() {
        System.out.println("Phone结束工作");
    }
}
  • 电脑类 调用接口代码
public class Computer {
    public void work(UsbImplements usbImplements){
        usbImplements.start();		//调用传入对象的所实现的接口,不同对象实现不同功能的接口
        usbImplements.end();
    }
}
  • 测试代码
public class Test {
    public static void main(String[] args) {
        Phone phone = new Phone();		//创建Phone对象		
        Computer computer = new Computer();		//创建Computer对象
        computer.work(phone);
    }
}

输出结果如下

image-20230727233715574

接口基本介绍

image-20230727234132457

接口的精髓(简洁,方便,不乱)

image-20230727234808711

接口使用细节

image-20230727235546306

(重点6 7 )

image-20230728000209810

接口VS继承类

继承:本能继承(走,跑,吃喝拉撒)

接口:拓展自身的能力(像鸟一样可以在空中飞,像鱼一样下水活动)

interface Fishable{		//鱼的接口
    void swimming();
}
interface Birdable{		//鸟的接口
    void fly();
}
public class LittleMonkey extends OldMonkey implements Fishable,Birdable{
				//猴子类实现两个接口
    @Override
    public void swimming() {
        System.out.println("猴子通过学习,学会了游泳");
    }

    @Override
    public void fly() {
        System.out.println("猴子通过学习,学会了飞翔");
    }   
}

image-20230728210422496

接口的多态(向上转型)

image-20230728211052086

接口不可以实例化,但是可以指向实现了接口的对象,也可以指向数组(数组里面放的是“指针”,指向对象)

多态传递

interface IA{
    void hi();
}
interface IB extends IA{
	//空
}
public class AA implements IB{
    @Override
    public void hi() {
        System.out.println("你好");
    }
}

类AA在实现接口IB的时候,也必须实现接口IA,因为IB继承了IA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值