05 2022 档案
摘要:public interface MyInterface { void method1();//抽象方法 void method2();} public class MyInterfaceImpl implements MyInterface { @Override public void meth
阅读全文
摘要:public interface MyInterface { void method();//抽象方法} public class MyInterfaceImpl implements MyInterface { @Override public void method() { System.out
阅读全文
摘要:/*局部内部类,如果希望访问所在方法的局部变量,那么这个局部变量必须是“有效的final”。 备注:从Java 8+开始,只要局部变量事实不变,那么final关键字可以省略。原因:1. new出来的对象在堆内存当中。2. 局部变量是跟着方法走的,在栈内存当中。3.方法运行结束之后,立刻出栈,局部变量
阅读全文
摘要:/*如果一个类是定义在一个方法内部的,那么这就是一个局部内部类。“局部”:只有当前所属的方法才能使用它,出了这个方法外面就不能用了。定义格式:修饰符 class 外部类名称{ 修饰符 返回值类型 外部类方法名称(参数列表){ class 局部内部类名称{ //... } }}小节一下类的修饰符:pu
阅读全文
摘要://如果出现了重名现象,那么格式是:外部类名称.this.外部类成员变量名public class Outer { int num=10;//外部类的成员变量 public class Inner /*extends Object*/{ int num=20;//内部类的成员变量 public vo
阅读全文
摘要:/*如果一个事物的内部包含另一个事物,那么这就是一个类内部包含另一个类。例如:身体和心脏的关系。又如:汽车和发动机的关系。分类:1.成员内部类2.局部内部类(包含匿名内部类)成员内部类的定义格式:修饰符 class 外部类名称{ 修饰符 class 内部类名称{ //... } //...}注意:内
阅读全文
摘要:/*如果一个事物的内部包含另一个事物,那么这就是一个类内部包含另一个类。例如:身体和心脏的关系。又如:汽车和发动机的关系。分类:1.成员内部类2.局部内部类(包含匿名内部类)成员内部类的定义格式:修饰符 class 外部类名称{ 修饰符 class 内部类名称{ //... } //...}注意:内
阅读全文
摘要:/*Java中有四种权限修饰符: public > protected > (default) > private 同一个类: YES YES YES YES同一个包: YES YES YES NO不同包子类:YES YES NO NO不同包非子类:YES NO NO NO注意事项:(default
阅读全文
摘要:/*对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样是不可变。1.由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值了2.对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。二者选其一。3.必须保证类当中所有重载的构造方法,都最终会对final
阅读全文
摘要:/*final关键字代表最终、不可改变的。常见四种用法:1.可以用来修饰一个类2.可以用来修饰一个方法3.还可以用来修饰一个局部变量4.还可以用来修饰一个成员变量 */public class Demo01Final { public static void main(String[] args)
阅读全文
摘要:/*final关键字代表最终、不可改变的。常见四种用法:1.可以用来修饰一个类2.可以用来修饰一个方法3.还可以用来修饰一个局部变量4.还可以用来修饰一个成员变量 */public class Demo01Final {} /*当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不
阅读全文
摘要:/*final关键字代表最终、不可改变的。常见四种用法:1.可以用来修饰一个类2.可以用来修饰一个方法3.还可以用来修饰一个局部变量4.还可以用来修饰一个成员变量 */public class Demo01Final {} /*当final关键字用来修饰一个类的时候,格式:public final
阅读全文
摘要:/*如何才能知道一个父类引用的对象,本来是什么子类?格式:对象 instanceof 类型这将会得到一个boolean值结果,也就是判断前面的对象能不能当做后面类型的实例。 */public class Demo02Instanceof { public static void main(Strin
阅读全文
摘要:1.对象的向上转型,其实就是多态写法: 格式:父类名称 对象名=new 子类名称(); Animal animal=new Cat(); //创建了一只猫,当做动物看待,没问题。 含义:右侧创建一个子类对象,把它当做父类来看待使用。 注意事项:向上转型一定是安全的。从小范围转向了大范围,从小范围的猫
阅读全文
摘要:/*在多态的代码当中,成员方法的访问规则是: 看new的是谁,就优先用谁,没有则向上找。口诀:编译看左边,运行看右边。对比一下:成员变量:编译看左边,运行还看左边。成员方法:编译看左边,运行看右边。 */public class Demo02MultiMethod { public static v
阅读全文
摘要:/*访问成员变量的两种方式:1、直接通过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上找。2、间接通过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则向上找。 */public class Demo01MultiField { public static void main(Str
阅读全文
摘要:面向对象三大特征:封装性、继承性、多态性。 extents继承或者implements实现,是多态生的前提。 /*代码当中体现多态性,其实就是一句话,父类引用指向子类对象。格式:父类名称 对象名=new 子类名称();或者:接口名称 对象名=new 实现类名称(); */public class D
阅读全文
摘要:public interface MyInterfaceA { public abstract void methodA(); public abstract void methodCommon(); public default void methodDefault(){ System.out.p
阅读全文
摘要:/*使用接口的时候,需要注意:1、接口是没有静态代码块或者构造方法的。2、一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。格式:public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB{ //覆盖重写所有抽象方法}
阅读全文
摘要:在JAVA 9+版本中,接口的内容可以有: 1.成员常量其实是常量,格式:【public】 【static】 【final】 数据类型 常量名称=数据值; 注意:常量必须进行赋值,而且一旦赋值不能改变。常量名称完全大写,用下划线进行分隔。 2、接口中最重要的就是抽象方法,格式: 【public】 【
阅读全文
摘要:/*接口当中可以定义“成员变量”,但是必须使用public static final三个关键字进行修饰。从效果上看,这其实就是接口的【常量】。格式:public static final 数据类型 常量名称 = 数据值注意:一旦使用final关键字进行修饰,说明不可改变。注意事项:1、接口当中的常量
阅读全文
摘要:/*问题描述:我们需要抽取一个公有方法,用来解决两个默认方法之间重复代码的问题。但是这个共有方法不应该让实现类使用,应该是私有化的。解决方案:从java 9开始,接口当中允许定义私有方法。1、普通私有方法,解决多个默认方法之间重复代码问题格式:private 返回值类型 方法名称(参数列表){ 方法
阅读全文
摘要:/*从java 8开始,接口当中允许定义静态方法。格式:public static 返回值类型 方法名称(参数列表){ 方法体}提示:就是将abstract或者default换成static即可,带上方法体。 */public interface MyInterfaceStatic { public
阅读全文
摘要:/*从java 8开始,接口里允许定义默认方法。格式:public default 返回值类型 方法名称(参数列表){ 方法体}备注:接口当中的默认方法,可以解决接口升级的问题。 */public interface MyInterfaceDefault { //抽象方法 public abstra
阅读全文
摘要:/*接口就是多个类的公共规范。接口是一种引用数据类型,最重要的内容就是其中的:抽象方法。如何定义一个接口的格式:内容public interface 接口名称{ //接口内容}备注:换成了关键字interface之后,编译生成的字节码文件仍然是:.java --> .class。如果是java 7,
阅读全文
摘要:/*在任何版本的java中,接口都能定义抽象方法:格式:public abstract 返回值类型 方法名称(参数列表);注意事项:1、接口当中的抽象方法,修饰符必须是两个固定的关键字:public abstract2、这两个关键字修饰符,可以选择性地省略。(今天新学,所以不推荐)3、方法的三要素,
阅读全文
摘要:接口就是一种公共的规范标准。 只要符合规范标准,就可以大家通用。 /*接口就是多个类的公共规范。接口是一种引用数据类型,最重要的内容就是其中的:抽象方法。如何定义一个接口的格式:内容public interface 接口名称{ //接口内容}备注:换成了关键字interface之后,编译生成的字节码
阅读全文
摘要:关于抽象类的使用,以下为语法上要注意的细节,虽然条目较多,但若理解了抽象的本质,无需死记硬背。 1、抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。 理解:假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义。 2、抽象类中,可以有构造方法,是供
阅读全文
摘要:/*抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束。抽象类:抽象方法所在的类,必须是抽象类才行。在class之前写上abstract即可。如何使用抽象类和抽象方法:1、不能直接创建new抽象类对象。2、必须用一个子类来继承抽象父类。3、子类必须覆盖重写抽象父类当中所有的抽象方
阅读全文
摘要:如果父类当中的方法不确定如何进行{}方法体实现,那么这就应该是一个抽象方法。 /*抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束。抽象类:抽象方法所在的类,必须是抽象类才行。在class之前写上abstract即可。 */public abstract class Anima
阅读全文
摘要:public class Fu { int num=10; public void method(){ System.out.println("父类方法"); }} public class Zi extends Fu { int num=20; @Override public void meth
阅读全文
摘要:public class Fu { int num=30;} /*super关键字用来访问父类内容,而this关键字用来访问本类内容。用法也用三种:1、在本类的成员方法中,访问本类的成员变量。2、在本类的成员方法中,访问本类的另一个成员方法。3、在本类的构造方法中,访问本类的另一个构造方法。在第三种
阅读全文
摘要:public class Fu { int num=10; public void method(){ System.out.println("父类方法"); }} /*super关键字的用法有三种:1、在子类的成员方法中,访问父类的成员变量。2、在子类的成员方法中,访问父类的成员方法。3、在子类的
阅读全文
摘要:public class Fu { public Fu() { System.out.println("父类无参构造"); } public Fu(int num){ System.out.println("父类有参构造"); }} public class Zi extends Fu{ publi
阅读全文
摘要:public class Phone { public void call(){ System.out.println("打电话"); } public void send(){ System.out.println("发短信"); } public void show(){ System.out.
阅读全文
摘要:1、1.向上转型和向下转型的概念。 向上转型:子 >父,又被称为自动类型转换:Animal a= new Cat(); 向下转型:父 >子,又被称为强制类型转换:Cat c= (Cat) a;需要添加强制类型转换符。 什么时候需要向下转型? 需要调用或者执行子类对象中特有的方法,必须进行向下转型,才
阅读全文
摘要:/*这个代码的疑问? 肉眼可以观察到底层到底是new Bird()还是new Cat() 我们为什么还要进行instanceof的判断呢!!! 原因是:你以后可能肉眼看不到。 */public class Test02 { public static void main(String[] args)
阅读全文
摘要:/*这个代码的疑问? 肉眼可以观察到底层到底是new Bird()还是new Cat() 我们为什么还要进行instanceof的判断呢!!! 原因是:你以后可能肉眼看不到。 */public class Test02 { public static void main(String[] args)
阅读全文
摘要:/* 多态的基础语法: 1、学习多态的基础语法之前,我们需要普及两个概念: 第一个:向上转型 子 >父(自动类型转换) 第二个:向下转型 父 >子(强制类型转换,需要加强制类型转换符) 注意:java中允许向上转型,也允许向下转型。无论是向上转型,还是向下转型,两种类型之间必须有继承关系, 没有继承
阅读全文
摘要://动物类:父类public class Animal { //移动的方法 public void move(){ System.out.println("动物在移动!!!"); }} //猫类,子类public class Cat extends Animal { //对move方法进行重写 pu
阅读全文
摘要:方法覆盖: 1、什么时候考虑使用方法覆盖? 父类中的方法无法满足子类的业务需求,子类有必要继承过来的方法进行覆盖。 2、什么条件满足的时候构成方法覆盖? 第一:有继承关系的两个类 第二:具有相同方法名、返回值类型、形式参数列表 第三:访问权限不能更低 第四:抛出异常不能更多 3、关于Object类中
阅读全文
摘要:/* 关于Object类中的toString()方法 1、toString()方法的作用是什么? 作用:将“java对象”转换成“字符串的形式”。 2、Object类中toString()方法的默认实现是什么? public String toString(){ return getClass().
阅读全文
摘要:1、什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么? 数据库:英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。顾名思义:存储数据的仓库,实际上就是一堆文件。这些文件中存储了具有特定格式的数据。 数据库管理系统:DataBaseManagement,简
阅读全文
摘要:public class OverrideTest03 { public static void main(String[] args) { //创建中国人对象 //ChinaPeople p1=new ChinaPeople("张三");//错误原因:没有这样的构造方法 ChinaPeople p
阅读全文
摘要:/*回顾一下方法重载!!!! 什么时候考虑使用方法重载Overload? 当一个类当中,如果功能相似的话,建议将名字定义的一样,这样代码美观,并且方便编程。 什么条件满足之后能够构成方法重载overload??? 条件一:在同一个类当中 条件二:方法名相同 条件三:参数列表不同(个数,顺序,类型)—
阅读全文
摘要:/*当前程序存在的问题(设计上的问题)???? 鸟儿在执行move()方法的时候,最好输出的结果是:“鸟儿在飞翔”, 但是当前的程序在执行move()方法的时候输出的结果是:“动物在移动!!”, 很显然Bird子类从Animal1父类中继承过来的move()方法已经无法满足子类的业务需求。 */pu
阅读全文
摘要:1.1、任何一个类,没有显示继承任何类,默认继承Object,那么Object类当中有哪些方法呢?老祖宗为我们提供了哪些方法? 以后慢慢的一定要适应看JDK的源代码(多看看牛人写的程序自己才会变成牛人。)先模仿后超越。 java为什么比较好学呢? 是因为java内置了一套庞大的类库,程序员不需要从0
阅读全文
摘要:1.1、在实际开发中,满足什么条件的时候,我们可以使用继承呢? 凡是采用 “is a ” 能描述的,都可以继承。 例如: Cat is a Animal:猫是一个动物 Dog is a Animal:狗是一个动物 CreditAccount is a Account:信用卡账户是一个银行账户 ...
阅读全文
摘要:1、继承extends /*测试:子类继承父类之后,能使用子类对象调用父类方法吗? 实际上以上的这个问题问的有点蹊跷了!!!! 哪里嗘跷?“能使用子类对象调用父类方法” 本质上,子类继承父类之后,是将父类继承过来的方法归为自己所有。 实际上调用的也不是父类的方法,是他子类自己的方法(因为已经继承过来
阅读全文
摘要://使用继承机制来解决代码复用问题。public class ExtendsTest02 { public static void main(String[] args) { //创建普通账户 Account act=new Account(); act.setActno("111111"); ac
阅读全文
摘要://分析以下程序存在什么问题?代码臃肿。代码没有得到重复利用。public class ExtendsTest01 { public static void main(String[] args) { //创建普通账户 Account act=new Account(); act.setActno(
阅读全文
摘要:1.1、什么是继承,有什么用? 继承:在现实世界当中也是存在的,例如:父亲很有钱,儿子不用努力也很有钱。 继承的作用: 基本作用:子类继承父类,代码可以得到复用。(这个不是重要的作用,是基本的作用) 主要(重要)作用:因为有了继承关系,才有了后期的方法覆盖和多态机制。 1.2、继承的相关特性 (1)
阅读全文
摘要:/*程序再怎么变化,万变不离其宗,有一个固定的规律: 所有的实例相关的都是先创建对象,通过“引用.”来访问 所有的静态相关的都是直接采用“类名.”来访问。 你有发现一些问题吗? 总有一些是需要记忆的,在这些记忆的基础之上进行分析。 大结论: 只要负责调用的方法a和被调用的方法b在同一个类当中: th
阅读全文
摘要:1、this总结: 1.1 this是一个关键字,是一个引用,保存内存地址指向自身。 1.2 this可以使用在实例方法中,也可以使用在构造方法中。 1.3 this出现在实例方法中其实代表的是当前对象。 1.4 this不能使用在静态方法中。 1.5 this. 大部分情况下可以省略,但是用来区分
阅读全文
摘要:/* 1、this除了可以使用在实例方法中,还可以用在构造方法中。 2、新语法:通过当前的构造方法去调用另一个本类的构造方法,可以使用以下的语法格式: this(实际参数列表); 通过一个构造方法1去调用构造方法2,可以做到代码复用 但需要注意的是:“构造方法1和构造方法2”都是在同一个类当中。 3
阅读全文
摘要:/* 1、this可以使用在实例方法中,不能使用在静态方法中。 2、this关键字大部分情况下可以省略,什么时候不能省略呢? 在实例方法中,或者构造方法中,为了区分局部变量和实例变量,这种情况下:this. 是不能省略的。 */public class ThisTest03 { public sta
阅读全文
摘要://分析:i变量在main方法中能不能访问???? public class ThisTest{ //实例变量 int i = 100; //这个i变量是不是必须先new对象才能访问。 //静态变量 static int k=111; // 静态方法 public static void main(
阅读全文
摘要:/* this: 1、this是一个关键字,全部小写。 2、this是什么,在内存方面是怎样的? 一个对象一个this. this是一个变量,是一个引用。this保存当前对象的内在地址,指向自身。 所以,严格意义上来说,this代表的就是“当前对象” this存储在堆内存当中对象的内部。 3、thi
阅读全文
摘要://判断以下程序的执行顺序public class CodeOrder { //静态代码块 static { System.out.println("A"); } //入口 public static void main(String[] args) { System.out.println("Y"
阅读全文
摘要:/* 1、除了静态代码块之外,还有一种语句块叫做:实例语句块 2、实例语句在类加载时并没有执行 3、实例语句语法? { java语句; java语句; java语句; } 4、实例语句块在什么时候执行? 只要是构造方法执行,必然在构造方法执行之前,自动执行“实例语句块”中的代码。 实际上这也是sun
阅读全文
摘要:/* 栈:方法只要执行,会压栈。(局部变量) 堆:new出来的对象都在堆中。垃圾回收器主要针对。(实例变量) 方法区:类的信息,字节码信息,代码片段。(静态变量) 方法的代码片段放在方法区,但是方法执行过程当中需要的内在在栈中。 */public class StaticTest03 { //静态变
阅读全文
摘要:/* 1、使用static关键字可以定义:静态代码块 2、什么是静态代码块,语法是什么? static { java语句; java语句; } 3、static静态代码块在什么时候执行呢? 类加载时执行。并且只能执行一次。 静态代码块有这样的特征/特点。 4、注意:静态代码块在类加载时执行,并且在m
阅读全文
摘要:/*关于方法来说,什么时候定义为实例方法?什么时候定义为静态方法? 有没有参考标准。 此方法一般都是描述了一个行为,如果说该行为必须由对象去触发。那么该方法定义为实例方法。 参考标准: 当这个方法体当中,直接访问了实例变量,这个方法一定是实例方法。 我们以后开发中,大部分情况下,如果是工具类的话,工
阅读全文
摘要:public class staticTest { public static void main(String[] args) { //这是比较正规的方式,静态方法采用“类名.” staticTest.doSome(); //对象 staticTest st=new staticTest(); /
阅读全文
摘要:什么时候变量声明为实例的,什么时候声明为静态的? 如果这个类型的所胡对象的某个属性值都是一样的,不建议定义为实例变量,浪费内存空间。建议定义为类级别特征,定义为静态变量,在方法区中只保留一份,节省内存开销。 一个对象一份的是实例变量。 所有对象一份的是静态变量。 public class Perso
阅读全文
摘要:static: 1、static翻译为“静态的”。 2、所有static关键字修饰的都是类相关的,类级别的。 3、所有static修饰的,都是采用“类名.”的方式访问的。 4、static修饰的变量:静态变量。 5、static修饰的方法:静态方法。 变量的分类: 变量根据声明的位置进行划分: 在方
阅读全文
摘要:封装的代码实现两步: 第一步:属性私有化 第二步:1个属性对外提供两个set和get方法。外部程序只能通过set方法修改,只能通过get方法读取,可以在set方法中设立关卡来保证数据的安全性。 在强调一下: set和get方法都是实例方法,不能带static。不带static的方法称为实例方法,实例
阅读全文
摘要:public class Person{ private int age; } get和set方法应该带有static,还是不带有static,get和set方法应该定义为实例方法吗? get读年龄,set改年龄,这个读和改都是操作的一个对象的年龄。(没有对象,何来的年龄呢?) 封装的第二步:对外提
阅读全文
摘要:构造方法 1.什么是构造方法,有什么用? 构造方法是一个比较特殊的方法,通过构造方法可以完成对象的创建,以及实例变量的初始化。换句话说:构造方法是用来创建对象,并且同时给对象的属性赋值。(注意:实例变量没有手动赋值的 时候,系统会赋默认值。) 2.重点(需要记忆):当一个类没有提供任何构造方法,系统
阅读全文
摘要:一:封装 1.1面向对象的三大特征:封装、继承、多态。(有了封装,才有继承,有了继承,才能说多态) 1.2面向对象的首要特征:封装:什么是封装?有什么用? 答:现实生活中有很多的例子都是封装的,例如:手机,电视机,笔记本电脑。保证内部的部件是安全的。另外封装了之后,对于我们使用者来说,我们是看不见内
阅读全文