java 父类获取子类名称_java基础语法-小白笔记

java语言发展史:1.0(96年)->1.1(97年)->1.2(98年)->1.3(00年)->(02年)->5.0重大更新(04年)->6.0(06年)->7.0(11年)->8.0(14年)->9.0(17年)->10.0(18年.3月)->11.0(18年.9月)

b29cd5ac9db5fef434e160e56ab4119d.png

2c097eb5f88dbdad27272679e71a42b2.png

0322588cf1d4d0114553488d153b3354.png

常量:在运行过程中不能修改的变量,null不能直接输出

标识符:不能以数字开头。由数字,字母下划线和美元符号$组成

java基本类型字节数

byte 1字节;boolean 1字节;short 2字节;char 2字节;int 4字节;float 4字节;long 8字节;double 8字节;

自动类型转换:变量=变量;根据在内存中占用字节的多少,占用字节少的数据类型赋值给占用字节多的类型时

强制类型转换:变量=(需要转换为的类型)变量

字符的“+”操作:对于字符使用+操作是使用字符的ASCII码值进行相加的(A=65,a=97)

自动类型提升:当算术表达式当中包含多种数据类型时,整个表达式的类型自动提升到字节数最大的类型

+=:隐含了强制类型转换操作 shrot a = 10; a +=20; a = a+20等价于a = (short)(a+20);因为默认的类型是int,20是int类型

字符串+操作:当+操作中出现字符串时是连接操作

^: 相同为False,不同为True

短路与&&:如果左侧为False,结果肯定为False,后面的就不在执行

短路或||:如果左侧为True,结果肯定为True,后面的就不在执行

栈:栈中存放局部变量,运行完删除

堆:堆中存放new出来的空间,由垃圾回收器管理

重载

  • 方法名相同,参数个数或者参数类型不同
  • 与访问控制符、修饰符、返回值类型无关

重写

  • 当子类需要和父类完全一样的声明方法时(父类和子类之间),修饰符要大于等于父类,同为静态或者非静态。

字符串

  • 通过new关键字创建的多个字符串,即使内容相同,地址也不相同
  • 直接赋值创建的字符串,若内容相同则地址相同

ArrayList

  • 可调整大小的数组实现。
  • remove(Object)删除指定的元素,返回是否删除成功
  • remove(index)删除指定索引的元素,返回删除的元素
  • get(index)返回指定索引处的元素;size()返回集合中元素的个数

构造方法:子类所有的构造方法都会在调用之前先调用父类的无参构造方法,即super(),super()是每一个子类构造方法的第一句

package:带包编译javac -d . HelloWorld.java

权限修饰符

  • public>protected>默认>private
  • 同一个包下的类和子类:可以访问public,protected,默认三种权限修饰的方法,变量
  • 不同包下的类和子类:子类可以访问父类public,protected修饰的方法和变量,非子类仅可以访问public修饰的方法和变量

458e2bc6acdd3d8c997ed5669cea757c.png

状态修饰符

  • final修饰的基本类型的数据值是常量不可以变
  • final修饰引用变量时,地址值不能变,引用变量里的内容可以发生改变

static:静态的意思;通过static修饰的成员变量,其值可以被所有对象共享。可以通过对象.name访问,但是建议通过类名.name访问

static访问权限

  • static修饰的方法只能访问static修饰的成员变量和方法
  • 非static修饰的方法可以访问static和非static修饰的方法和变量

多态

  • 多态的前提和体现(有继承/实现关系,有方法重写,有父类引用指向子类对象)
  • 在多态时父类引用只能访问父类中声明的变量和方法。将父类引用强制转换成子类时可以访问父类和子类的变量和方法

多态中成员访问特点

  • 成员变量(编译看左边,执行实际调用看左边)
  • 成员方法(编译看左边,执行实际调用看右边)
  • 成员变量和方法访问不一样是因为,成员方法存在重写

多态优缺点

  • 优点->提高了程序的扩展性(方法定义时使用父类作为形参,可以将所有的子类作为实参,方法内访问对象的方法时可以访问子类的方法)
  • 缺点->:不能使用子类特有的成员方法(由于使用父类作为参数,在调用时只能调用父类中定义且被子类重写的方法)

多态类型转换

  • 向上转型 (父类 变量名 = new 子类();)
  • 向下转型:((子类类名)父类引用)

抽象类

  • 没有具体实现的方法应该定义为抽象方法;
  • 抽象类可以没有抽象方法,拥有抽象方法的类必须定义为抽象类;
  • 抽象类通过多态进行实例化;

接口

  • 没有构造方法,所有的类默认继承Object类
  • 一个类可以实现多个接口,接口之间可以单继承和多继承
  • 不能有非抽象方法,所有方法默认使用public abstract修饰
  • 只有常量没有变量,变量默认使用static final修饰,可以使用类名访问

java 8 在接口加入默认方法,主要用于接口升级

  • public default 返回值 方法名(){方法体}
  • 重写接口中的默认方法时,不可以加default关键字

java 9 在接口中加入静态方法和私有方法

  • public static 返回值 方法名(){方法体}
  • 静态方法只能有接口名调用,接口的实现类是不可以调用的。
  • private 返回值 方法名(){方法体}
  • private static 返回值 方法名(){方法体}
  • 私有方法可以把相同的代码提取出来进行封装,供其他函数调用,同时又不希望实现类调用

抽象类是对事物的抽象包括属性和方法,接口是对行为的抽象不包括属性只有常量

内部类

  • 内部类可以直接访问外部类的成员,包括私有
  • 外部类必须创建内部类对象才可以访问其成员

进程

线程是进程中的单个顺序控制流,是一条执行路径

  • 单线程:一个进程如果只有一条执行路径,则称为单线程程序
  • 多线程:一个进程如果有多条执行路径,则称为多线程程序
  • run()方法封装线程执行的代码,直接调用,相当于普通的调用
  • start()启动线程;然后又JVM调用此线程的run()方法
  • setName(String name):将线程的名称设置为name
  • getNmae():获得线程的名称
  • join() 调用该方法的线程执行完毕后其他线程才能开始执行

多线程的两种方法

  • 继承Threadlei
  • 实现Runnable接口,将创建的对象作为Thread类构造方法的参数

多线程安全问题原因

  • 是多线程环境
  • 有共享数据
  • 操作共享数据需要多条语句
  • 解决办法是破坏三个条件的任意一个

反射获取Class类对象的方式

  • 字节码文件未加载阶段:Class.forName(全类名) 多用于配置文件
  • 字节码文件已加载阶段:类名.class 用于参数传递
  • 对象已经在内存中创建阶段:对象.getClass() 用于获取对象的字节码
  • 同一个字节码文件(.class),再一次程序运行中只加载一次,使用三种方法创建的是同一个对象

反射成员变量常用方法

  • getFields() 获取public修饰的成员变量
  • 属性.get(对象) 获取属性值
  • 属性.set(对象,属性值) 为属性设置值
  • getDeclaredFields() 获取所有成员变量不考虑修饰符
  • 属性.setAccessible(true) 忽略修饰符检测

反射构造方法

  • 类对象.getConstruct(属性类型...)
  • 构造器.newInstance(属性类型)

反射成员方法

  • getMethods(方法名) 获取公共方法,包括继承来的
  • getDeclaredMethods() 获取公共和私有的,不包含继承的方法
  • 方法名.invoke(对象名,参数值)

9340c16d6e3c0360bc929e7078995483.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值