JavaSE-类
一、基础概念:计算机语言的发展是接近人的思维方式演变:汇编语言(面向机器)、C语言(面向过程)、java(面向对象)
二、成员变量和局部变量:
1.全名定义一个类:
Package 包名;
Class 类名 extends 父类 implements 接口名{
成员变量;
构造方法;
成员方法;
}
2.类名的首字母大写;对象的创建:可以先声明再创建;也可以采用一步到位法;创建对象时,可以先声明再创建,也可以采用一步到位法
2.成员变量一般是基本数据类型,也可以是引用类型(指向了另外一个类)
3.二者区别:
三、匿名对象:
1.在内存里面,第一段代码在堆里面之开辟出一个;而第二段代码会有两个空间,因为new一下就是一个空间;
2.匿名对象可以调用属性,并且可以赋值,但是之后马上会变成垃圾,没有意义
3.运用场景:
四、成员方法(成员函数):
1.成员方法的定义:
Public 返回数据类型 方法名 (参数列表)
{
语句;//方法(函数)的主体
}
2.注意事项:
(1)变量名首字母是小写的、类名首字母大写、方法名的首字母是小写的,(驼峰法也叫匈牙利法、下划线法)
(2).方法的参数列表可以是多个,方法可以没有返回值
(3)成员变量和成员方法不是一个类的必需品
五、构造方法:
1.存在的意义:可以实现在创建类对象的时候,就已经直接指定这个对象的某些属性
2.特点:方法名和类名相同;没有返回值;创建一个类的新对象时,系统会自动的调用该类的构造方法完成对新对象的初始化 ;一个类可以构造多个构造方法;如果没有定义构造方法,系统会自动生成一个默认的空参构造方法
3.构造函数前面可以有修饰符,public、默认修饰符(没有)、protected、private都可以
4.
六、this:
1.This只能在类定义里面使用,不能在类定义的外部使用
2.代替当前对象的引用,用来区分成员变量和局部变量重名
3.当一个类创建之后,在内存中发生如下操作:
七、静态变量/静态方法
1.定义语法:访问修饰符+数据类型+变量名
Public class Cal
{
Static int i=1;
Static //(静态区块,只被执行一次,当类被定义的时候就已经被执行了,即使不创建类的实例它也已经运行了)
{
i++;
}
}
2.在内存中存在的形式:
3.static关键字特点:
(1)优先于对象存在:因为含有静态变量的字节码会先加载到方法区里面去,此时对象还没有加载到堆里面
(2)可以被任何一对象访问,甚至直接用类名访问,类变量原则上用类方法去访问
(3)类方法中不能访问非静态变量,但是非静态方法既可以访问非静态变量也可以访问静态变量
4.静态变量和实例变量的区别:
(1)加上static称为类变量或者静态变量,否则称为实例变量;类变量是与类相关的,公共的属性;实例变量是属于每个对象个体的属性;类变量可以通过类名.类变量名直接访问
(2)
(3)
(4)目的是不让其他类来创建该类的实体对象
5.静态变量和成员变量的区别:
(1)
6.main方法格式详解
说明:static是因为正常的对象方法需要先建立类对象才能使用,而类方法可以直接使用类名调用
八、代码块
1.
2.
3.静态代码块是优先于主方法执行的
九、类编程四大特征
1.抽象:实际就是把一类事物的共有属性和行为提取出来,形成一个物理模板,这种方法就是抽象
2.封装:
(1)封装就是把抽象出的模型和对模型变量要进行的操作封装在一起,程序的其他部分只有通过被授权的操作才能对数据进行操作,java中一般会把类封装成private的
(2)访问控制修饰符的级别
第一种:public,对外公开
第二种:protected,受保护的级别,对子类和同一个包中的类公开
第三种:默认的没有修饰符,向同一个包的类公开
第四种:private,私有级别,只有类本身可以访问,不对外公开
(3)包
打包命令:package XXX.XXX;包名一般都是小写的,通过.来分级,一般打包命令放在文件开始的地方
引入包:import 包;//目的是要使用该包下的类
作用:区分相同名字的类;当类很多的时候可以起到管理类的作用;用包来控制访问的权限
常用的包:java.lang.*(这是自动引入的)
Java.until.*
Java.net.*
Java.awt.*
2.继承
(1)继承可以解决代码复用,父类中定义的相同属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends语句来继承父类
(2)共有属性提取出来可以做为一个父类,希望被继承的属性不能写成private;父类中的public、protected和默认的属性方法可以被继承,private属性不能被继承;所以编程中,如果不希望子类继承某个属性或者方法,则将其声明为private
(3)子类最多只能继承一个父类
(4)Java所有的类都是object的子类,所有类都是它的孩子
(5)继承不是只能有一层继承,可以有多层次的继承,层次不做限制
(6)
(7)this和super的区别:
(8)继承中构造方法的关系
(9)方法重写、方法重载、方法覆盖的区别:
重载:方法名相同,参数列表不同,与返回类型无关,方法的修饰符可以不同,但如果只是修饰符不一样的话是不能构成重载的
覆盖:子类有一个方法和父类的某个方法的名称、返回类型、参数一样,那么就说子类的这个方法覆盖了父类的那个方法
3.多态:
(1)多态就是一个引用(类型)在不同情况下的多种状态;或者通过指向父类的指针,来调用在不同子类中实现的方法
(2)前提:
(3)多态中访问成员
(4)编译的时候,先看的是父类中所要求的方法存在与否,主要是为了顺利编译,实际在运行的时候则运行子类的要求方法,没有的话再运行父类中的方法,也叫动态绑定
(5)Java允许父类的引用变量引用它的子类的实例(对象)
(6)优点和缺点:
把父类当做参数使用的时候最好,因为这个时候扩展性最好
十、抽象类
1.当父类的一些方法或者类不能确定的时候,可以用abstract关键字来修饰它们
2.当一个类继承的父类是抽象类的话,需要把抽象楼中的所有抽象方法全部实现
3.抽象方法在父类类里面是不能实现的
4.抽象类不能被实例化;抽象类不一定需要有抽象方法;一旦一个类里面有了抽象的方法,那么这个类必须声明为抽象类;抽象方法不能有主体,(就是后面不能接大括号{})
5.
6.
十一、接口
1.
2.
3.
4.接口和抽象类的区别:
5.含义就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,再根据具体的情况把这些方法写出来
Class 类名 implements 接口{
方法;
变量;
}
6.当一个类实现了一个接口,就要求该类要将这个接口的所有方法统统实现,且一个类可以实现多个接口,中间用逗号隔开
7.接口通过interface创建,接口中的方法都是抽象的,即接口不能被实例化
8.接口中的所有方法都不能有主体,也就是说接口中所有的方法都不能被实现,或者说接口是更加抽象的抽象类;作为对比,抽象类中不一定需要有抽象方法但是可以有实现的方法也就是带有主体的非抽象方法
9.接口中可以有变量,但是变量不能用private和protected修饰:接口中的变量本质上都是static,而且是final类型的,不管加不加static的修饰符;在实际编程中,经常把常用的变量定义在接口中作为全局变量使用,访问形式 接口名.变量名
10.一个接口不能继承其他的类但是可以继承别的接口
11.实现接口和继承类的区别:子类继承父类之后,可以拥有父类的属性,但是如果需要父类没有的方法或者变量的时候,可以通过接口来实现;实现接口可以看做是对继承的一种补充;实现接口可在不打破继承关系的前提下,对某个类功能扩展,非常灵活
12.前期绑定和后期绑定的区别:在编译的时候就已经知道是什么类型的就叫做前期绑定,如果是要到后续使用的时候才能知道是什么类型的就叫做后期绑定
十二、final
1.
2.当修饰局部变量(基本类型+引用类型)的时候
也就是说可以在构造方法中初始化
十三、包
1.
2.生成包文件
-d后面接路径,“.”代表默认路径,即当前文件夹
3.
4.
十四、类与修饰符
1.修饰符
2.类的修饰符
3.成员变量的修饰符
4.构造方法的修饰符
5.成员方法的修饰符
十五、内部类、局部内部类、匿名内部类
1.内部类:
(1)
(2)例子:
(3)注意与调用静态内部类区别:
2.局部内部类:其实与局部变量有点像
3.匿名内部类(属于局部内部类的一种):
即代表接口的子类对象
匿名内部类只针对重写一个方法时候使用,因为多个方法的话需要每一个都要重写
匿名内部类在使用方法中的局部变量时,局部变量必须用final修饰
JavaSE-类的更多相关文章
- JavaSE 类继承中函数重写
(1) /** * 继承时重写方法的返回类型可以不一样 * 这时的返回值类型必须是与父类相同或者为子类. */ class A { public Object func(){ return null; ...
- java新手笔记9 类的封装示例
1.bank类 package com.yfs.javase; //类封装 public class BankCard { //属性 int balance;//默认0 实例变量 分配给每个对象一个 ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- java新手笔记19 抽象类
1.Shap package com.yfs.javase; public class Shape /*extends Object */{ //默认继承object object方法全部继承 //计 ...
- JSP前端总结
一.C标签 一] <c:out value="..." default="..." escapeXml="true"> ...
- Java匹马行天下之JavaSE核心技术——工具类
Java匹马行天之JavaSE核心技术——工具类 一.Object类 java.lang.ObjectObject类是所有类直接或间接的父类 常用的方法: toString():以字符串形式返回对象的 ...
- JavaSE 面试题: 类初始化和实例初始化等
JavaSE 面试题 类初始化和实例初始化等 class Father { private int i = test(); private static int j = method(); stati ...
- JavaSE学习笔记(14)---File类和IO流(字节流和字符流)
JavaSE学习笔记(14)---File类和IO流(字节流和字符流) File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 构造方 ...
- JavaSE学习笔记(8)---常用类
JavaSE学习笔记(8)---常用类 1.Object类 java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类 ...
- JavaSE学习笔记(5)---内部类和String类
JavaSE学习笔记(5)---内部类和String类 一.内部类基础 转自菜鸟教程 在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来 ...
随机推荐
- Python logging系统
我们都知道python在2.x之后自带了一个模块import logging. 但是每次都要写log很麻烦,同时我想把info,debug之类的指令通过颜色分离开来. 于是写了一个简单的类似glog的 ...
- SpringBoot 下 mybatis 的缓存
背景: 说起 mybatis,作为 Java 程序员应该是无人不知,它是常用的数据库访问框架.与 Spring 和 Struts 组成了 Java Web 开发的三剑客--- SSM.当然随着 Spr ...
- c# Winfrom窗体事件中启用多线程 并用子线程修改窗体里面的属性
昨天一个朋友问我一个问题,需求是 this.textBox1.Text = "睡眠前"; Thread.Sleep(1000); this.textBox1.Text = &quo ...
- java入门-day02
变量和数据类型 Java是强类型语言.数据在计算之前一定要有确定的类型 基本数据类型; byte /short /int /long/(分别占1-4字节) float(4字节,精度6-7位) ...
- Vue移动端项目总结
使用Vue项目写了一个移动端项目,然后又把项目硬生生的抽离了组件,一直忙着写RN项目没有时间总结心得,今天上午终于下定决心,写点总结. 1.position:absolute: 定位的时候不同手机的浏 ...
- Selenium 工作原理
Selenium是ThoughtWorks公司研发的一个强大的基于浏览器的开源自动化测试工具,它通常用来编写web应用的自动化测试.早期也即Selenium1.x时期主要使用Selenium RC(S ...
- 关于Flex布局
Flex是Flexible Box的缩写,意为“弹性布局”.弹性布局提供了一种更加有效的方式来对一个容器内的项目进行排列/对齐/分配空间等操作,让盒模型具有更大的灵活性.在一个容器盒子上添加displ ...
- java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp
java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp 错误是因为时间类型出现了0 ...
- 将float数据类型转换为str
示例程序: #include <stdio.h> . . void UART_send_byte(char dat); void UART_send_string(unsigned cha ...
- 每天一点Linux系列之—vim